2014-10-02 29 views
0

我有一個C#表單應用程序來發送CAN消息。C#在並行線程中等待動作

在開始時,我啓動一個線程來監視傳入消息,並將它們顯示在DataGridView上。

目前該應用程序已設置,以便用戶可以一次發送一條CAN消息並查看其響應。 所有這些工作正常,可靠。

我的應用程序的第二階段需要我自動發送完整的CAN消息列表。 爲此,我需要發送一條CAN消息,並等待其響應,然後發送下一條消息。

如何監視接收線程並暫停發送函數足夠長的時間以收到響應?

由於發送消息不在單獨的線程中,因此Thread.Sleep(n)會暫停整個程序。

+0

你看了關於aync /地等待着C#5,http://msdn.microsoft.com/en-gb/library /hh191443.aspx – 2014-10-02 15:29:52

+0

很難說沒有看到你如何發送消息...例如如果它是對'SendMyMessage'之類的調用,那麼只需在該調用之後發送下一個。 – 2014-10-02 15:45:13

回答

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個命令。無論如何,你可以把命令放在列表中。

如果你不想建立自己的圖書館女巫的命令,使用此:Commands in MVVM

+0

謝謝,這是有效的 – user3382779 2014-10-03 10:17:40