我有如下的代码片段:需要帮助的同步控制事件处理程序在C#中
public void PopulateItemList()
{
foreach(var item in collection)
{
bool isSuccess = GetSubItem(item.Id);
if(!isSuccess)
{
ShowError();
break;
}
}
}
public bool GetSubItem(string parentId)
{
bool isSuccess = false;
_service.Communication<ViewModel, Request, Response>((ViewModel vm, ref Request) =>
{
request.ApiName = Const.FXXXName;
request.Id = parentId;
}, (viewModel, response, error) =>
{
DoSomething();
...
isSuccess = response.IsOk; // I put a breakpoint here
}
return isSuccess; // I also put a breakpoint here
}
通信功能的原型如下:
public void Communication<VM, S, R>(WebSocketOut<VM, S) send, WebSocketIn<VM, R> recv)
其中WebSocketIn和WebSocketOut两个代表。问题是当我调试程序时,“return isSuccess;”语句总是在从“response.IsOk”收到结果之前运行,因此该func的返回值始终为“false”。换句话说,执行的顺序是:
- 回报isSuccess
- isSuccess = response.IsOk(之后的messageReceived(WebSocket4Net)触发的事件)
我不知道如何使它以相反的顺序运行。任何意见,建议或帮助将不胜感激。
感谢
您没有关闭_service.Communication'的括号。无效。 –