我真的需要您的帮助,并弄清楚这一点。

我的项目:

AccessProjectMap-- MainClass.cs-- ErrorLog.cs (public)ThreadProjectMap-- StartThread.cs

我想在项目启动时将StartThread设置为我的默认项目。现在,我的ThreadProjectMap中需要ErrorLog.cs文件。我做了一个参考,我实际上可以说ErrorLog log = new ErrorLog();也可以。当我尝试在MainClass.cs中使用ErrorLog时,它也正在工作。

但是我不能在main或DoThreading函数内部使用log

class StartThread {

    static string threadRefresh = ConfigurationManager.AppSettings.Get("refreshTime").ToString();

    Access ac = new Access();
    ErrorLog log = new ErrorLog();

    static void Main(String[] args) {
        log.LogMessageToFile("== Start Main() ==");
        Thread t = new Thread(new ThreadStart(DoThreading));
        t.Start();
        Console.Read();
    }

    static void DoThreading() {
        int refresh = 1;

        while (true) {

            Console.WriteLine("Test");
            log.LogMessageToFile("== Test - inside Thread ==");

            Thread.Sleep(1000);

        }

    }
}

最佳答案

问题不是由于不同的项目/命名空间,而是您试图以静态方法访问实例成员。

使您的log字段static,它应该可以正常编译。

static ErrorLog log = new ErrorLog(); //Here, make it static

static void Main(String[] args) {
    log.LogMessageToFile("== Start Main() ==");
    Thread t = new Thread(new ThreadStart(DoThreading));
    t.Start();
    Console.Read();
}

关于c# - 从另一个Project C#调用类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32335658/

10-10 21:42