C#正在等待并行线程中的操作
本文关键字:操作 线程 并行 在等待 | 更新日期: 2023-09-27 18:25:19
我有一个C#表单应用程序来发送CAN消息。
在开始时,我启动一个线程来监视传入消息,并将它们显示在DataGridView
上。
目前,该应用程序已设置为用户可以一次发送一条can消息,并查看其响应。所有这些都运行良好且可靠。
我的应用程序的第二阶段要求我自动发送CAN消息的完整列表。为此,我需要发送一条CAN消息,等待其响应,然后发送下一条。
如何监视接收线程,并停止发送函数足够长的时间以接收响应?
由于发送消息不在单独的线程中,Thread.Sleep(n)
将暂停整个程序。
我的方法:
public class DataViewModel
{
public AsynchronousCommand Send;
public DataViewModel()
{
Send = new AsynchronousCommand(() =>
{
SendData();
});
}
private void SendData()
{
}
}
public class SomewhereInForm
{
private DataViewModel dataViewModel = new DataViewModel();
public SomewhereInForm()
{
dataViewModel.Send.Executed += SendOnExecuted;
}
private void SendOnExecuted(object sender, CommandEventArgs args)
{
}
private void DoSome()
{
dataViewModel.Send.DoExecute(new int());
}
}
这是一个带有1个命令的示例。您可以将命令放在列表中,不管怎样。
如果您不想构建自己的库witch命令,请使用以下命令:MVVM 中的命令