【发布时间】:2017-10-20 08:58:36
【问题描述】:
我希望能够知道线程或等待回调何时首先完成,然后再执行之后的代码。这是我当前的代码:
foreach (var ip in iPAddresses)
{
string loopIp = ip;
WaitCallback func = delegate (object state)
{
if (PingHost(loopIp, portNumber))
{
Console.WriteLine("IP Found at: " + loopIp + ":" + portNumber);
IPAddressesAndPortNumbersList.Add(loopIp, portNumber);
}
};
ThreadPool.QueueUserWorkItem(func);
//I want the below to be executed after the thread has finished completely
Console.WriteLine("I have finished...");
}
解决方案:我知道您可以使用普通线程并执行此功能,但是,对于我正在做的工作,这样做会很慢。我发现这是在 waitcallback 函数中完成 require 工作的最快方法
【问题讨论】:
-
为什么不用
Task.Run?这是在ThreadPool上开始工作的现代方式。 -
我试过了,等我的任务慢下来
-
你根本不需要任何线程,只需要一个正确编写的可等待 PingHost()
-
嗯,我试试这个
标签: c# .net callback threadpool