【发布时间】:2017-07-01 15:28:07
【问题描述】:
有这个:
public Item_DataColl invoke_command_READ(string UCPTName)
{
networkingThread = new Thread(new ParameterizedThreadStart(thread_command_READ));
networkingThread.Start(new readingThreadParameter(UCPTName));
}
private Item_DataColl thread_command_READ_result(object parameter)
{
readingThreadParameter p = parameter as readingThreadParameter;
Item item;
if (p.UCPT_Name != null)
{
Item_DataColl resultSet;
try
{
OnProgressBarUpdate(progressBar.UnknownEnd);
resultSet = connector.command_READ(p.UCPT_Name);
readOperationDone(resultSet);
OnConsoleWriting(string.Format("[READING] Lecture réussie : {0} = {1}", ((Dp_Data)resultSet.Item[0]).UCPTname, ((Dp_Data)resultSet.Item[0]).UCPTvalue[0].Value), ILonConnectorConsoleResultType.RESULT);
return resultSet; // HERE, I WANT TO RETURN RESULT
}
catch (Exception e)
{
OnConsoleWriting(e.ToString(), ILonConnectorConsoleResultType.ERROR);
}
finally
{
OnProgressBarUpdate(progressBar.Invisible);
}
}
}
我正在尝试执行 SOAP 请求并发送结果。为了使应用程序“非阻塞”,我使用了 Thread。
soap 请求完美运行,但我无法在线程结束后发送结果。我必须跟踪它,当线程结束时,将结果发送回另一个类。
我该怎么做?
【问题讨论】:
-
你有没有考虑过使用任务——因为它们很容易在最后返回值
-
使用
Tasks 或async/await或回调方法,这取决于您没有向我们展示的架构 -
是的,我认为 Task 可能是一个很好的解决方案,你能通过一个例子告诉我我需要如何执行这个吗?
标签: c# .net multithreading return