编译程序(从MonoDevelop IDE编译程序)时,出现错误:



这里是代码的一部分。

Thread thread = new Thread(delegate {
    try
    {
        Helper.CopyFolder(from, to);
        Helper.RunProgram("chown", "-R www-data:www-data " + to);
    }
    catch (Exception exception)
    {
        Helper.DeactivateThread(Thread.CurrentThread.Name);
    }
    Helper.DeactivateThread(Thread.CurrentThread.Name);
});
thread.IsBackground = true;
thread.Priority = ThreadPriority.Lowest;
thread.Name = name;
thread.Start();

最佳答案

delegate { ... }是一个匿名方法,可以将任何委托(delegate)类型(包括ThreadStartParameterizedThreadStart)分配给。由于Thread类为两种参数类型都提供了构造函数重载,因此含义是哪个构造函数重载是不明确的。
delegate() { ... }(注意括号)是一个不带参数的匿名方法。可以将其分配给来委托(delegate)不带参数的类型,例如ActionThreadStart

因此,将您的代码更改为

Thread thread = new Thread(delegate() {

如果要使用ThreadStart构造函数重载,或
Thread thread = new Thread(delegate(object state) {

如果要使用ParameterizedThreadStart构造函数重载。

关于c# - 下列方法或属性C#之间的调用不明确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14910747/

10-13 22:08