我試圖使用進程間通信從我的程序的一個實例發送其內容到另一個實例。我在這裏下的代碼正在工作,但它使第一個實例凍結,並且只在第二個實例創建並且數據傳回時繼續運行。我懷疑它是因爲messaging_server0()不是異步任務。如何解決這個問題。有沒有辦法使messaging_server0異步?或者我錯過了什麼?c#將任務包裝到另一個任務
主迴路包含這一段代碼
var makeTask = Task<string>.Factory.StartNew(() => pipe_server.messaging_server0());
if (makeTask.Result != null) {
dataGrid_logic.DataGridLoadTarget(makeTask.Result);
}
和在另一側上我已經messaging_server0
public static string messaging_server0()
{
using (var messagebus1 = new TinyMessageBus("ExampleChannel"))
{
string ret = null;
messagebus1.MessageReceived += (sender, e) => ret = Encoding.UTF8.GetString(e.Message);
while (true)
{
if (ret != null)
{
return ret;
}
}
}
}
的方法名稱將要被重構。
您正在異步啓動消息傳遞任務,但會立即檢查其「結果」,因爲它沒有選擇,只能阻止調用線程並等待任務完成。 – Abion47