gpt4 book ai didi

应为 C# 方法名称

转载 作者:太空狗 更新时间:2023-10-29 19:51:38 25 4
gpt4 key购买 nike

我只是想传递一些值,但它一直在抛出错误。有人可以纠正我在这里缺少的东西吗?

这里有错误

Thread t_PerthOut = new Thread(new ThreadStart(ReadCentralOutQueue("test"));

我想将这个字符串值传递给 ReadCentralOutQueue

class Program
{
public void Main(string[] args)
{
Thread t_PerthOut = new Thread(new ThreadStart(ReadCentralOutQueue("test"));
t_PerthOut.Start();

}



public void ReadCentralOutQueue(string strQueueName)
{
System.Messaging.MessageQueue mq;
System.Messaging.Message mes;
string m;
while (true)
{
try
{



}
else
{
Console.WriteLine("Waiting for " + strQueueName + " Queue.....");
}
}
}
catch
{
m = "Exception Occured.";
Console.WriteLine(m);
}
finally
{
//Console.ReadLine();
}
}
}
}

最佳答案

这段代码:

Thread t_PerthOut = new Thread(new ThreadStart(ReadCentralOutQueue("test"));

尝试调用 ReadCentralOutQueue然后根据结果创建委托(delegate)。那是行不通的,因为它是一个 void 方法。通常,您会使用方法组 来创建委托(delegate)或匿名函数,例如lambda 表达式。在这种情况下,lambda 表达式将是最简单的:

Thread t_PerthOut = new Thread(() => ReadCentralOutQueue("test"));

您不能只使用 new Thread(ReadCentralOutQueue) 因为 ReadCentralOutQueueThreadStart 的签名不匹配>ParameterizedThreadStart.

重要的是您了解为什么会收到此错误,以及如何修复它。

编辑:为了证明它确实有效,这里有一个简短但完整的程序:

using System;
using System.Threading;

class Program
{
public static void Main(string[] args)
{
Thread thread = new Thread(() => ReadCentralOutQueue("test"));
thread.Start();
thread.Join();

}

public static void ReadCentralOutQueue(string queueName)
{
Console.WriteLine("I would read queue {0} here", queueName);
}
}

关于应为 C# 方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8814014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com