C#在并行线程中等待操作

C#在并行线程中等待操作,c#,multithreading,C#,Multithreading,我有一个C#form应用程序来发送CAN消息 在开始时,我启动一个线程来监视传入的消息,并将它们显示在DataGridView上 目前,该应用程序已设置为用户可以一次发送一条can消息,并查看其响应。 所有这些都工作正常可靠 我的应用程序的第2阶段要求我自动发送完整的CAN消息列表。 为此,我需要发送一条CAN消息,等待其响应,然后发送下一条 如何监视接收线程,并暂停发送函数足够长的时间,以便接收响应 由于发送消息不在单独的线程中,thread.Sleep(n)停止整个程序。我的方法: publ

我有一个C#form应用程序来发送CAN消息

在开始时,我启动一个线程来监视传入的消息,并将它们显示在
DataGridView

目前,该应用程序已设置为用户可以一次发送一条can消息,并查看其响应。 所有这些都工作正常可靠

我的应用程序的第2阶段要求我自动发送完整的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命令,请使用以下命令:

您是否阅读了C#5中的aync/await,如果看不到您是如何发送消息的,很难说。。。e、 g.如果是一个类似于
SendMyMessage
的呼叫,那么只需在该呼叫之后发送下一个。