Я пытаюсь использовать связь между процессами для отправки из одного экземпляра моей программы ее содержимого в другой экземпляр. Код, который у меня есть, работает, но он заставляет замораживать первый экземпляр и продолжает работать только при создании второго инстанса и передачи данных обратно. Я подозреваю, что поскольку messaging_server0() не является асинхронной задачей. Как бы подойти к этой проблеме. Есть ли способ сделать async для обмена сообщениями_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;
}
}
}
}
Имена методов будут переработан.
Вы запускаете задачу обмена сообщениями асинхронно, но сразу проверяете ее 'Result', для которой у него нет выбора, кроме как заблокировать вызывающий поток и дождаться завершения задачи. – Abion47