Я недавно столкнулся с этой проблемой.Основной проблемой был контекст, в котором были сделаны вызовы.
У меня было много кода, который выглядел так:
New()
{
IPC_Server.LoadFirstSetOfData();
}
IPC_Server_LoadFirstSetOfData_Completed(Object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
IPC_Server.LoadSecondSetOfData();
}
IPC_Server_LoadSecondSetOfData_Completed(Object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
ShowDataToUser();
}
Проблема с этим состояла в том, что я звонил 2-мФункция IPC, пока я был внутри 1-го обратного вызова.По какой-то причине выполнение этого «портит» следующий вызов.Переместив наши вызовы IPC из обратных вызовов, мы решили эту проблему.
Теперь как вы решите перевести вызовы из обратных вызовов, зависит от вас.Может быть, изменение контракта?Имеете таймер, который наблюдает за поступлением 1-го обратного вызова, а затем выполняет 2-ой вызов IPC из таймера?Выбор за вами.