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

时间:2014-10-02 15:26:10

标签: c# multithreading

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

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

目前设置应用程序,以便用户可以一次发送一条CAN消息,并查看其响应。 所有这些都很好,而且可靠。

我的应用程序的第2阶段要求我自动发送完整的CAN消息列表。 为此,我需要发送一条CAN消息,等待它的响应,然后发送下一条消息。

如何监控接收线程,并停止发送功能足够长时间才能收到响应?

由于发送消息不在单独的线程中,Thread.Sleep(n)将暂停整个程序。

1 个答案:

答案 0 :(得分:0)

我的方法:

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个命令的示例。您可以将命令放在List中,无论如何。

如果您不想构建自己的库巫婆命令,请使用:Commands in MVVM