同步异步方法

时间:2016-05-23 12:10:35

标签: c# asynchronous

我对var bid = await _applicationDataService.GetSnapshotFromServerAsync(b.BidId.ToString(), b.BidVersion); if (bid != null) { if (await _bidManagerService.CheckIfBidExistsInLocalDbAsync(bid.BidId, bid.BidVersion)) { await _bidManagerService.OverrideBidInLocalDbAsync(bid); } else { await _bidManagerService.SaveBidInLocalDbAsync(bid); } } 方法有疑问。我的代码如下所示:

await _bidContext.LoadBidByIdAsync(bidId.Value);

在项目的不同地方我有:

foreach (var item in data["result"])
{
      JObject obj = (JObject)item;
      obj.Property("property").Remove();
}

DataTable dt = JsonConvert.DeserializeObject<DataTable>(data["result"].ToString());

问题是该实体尚未在本地保存,但该方法将尝试加载它。我必须以某种方式等待,直到第一个块将完成下载和保存,然后我必须运行第二个块。

我无法冻结主要威胁,因为用户界面无法响应。

我发现了这样的事情:

  1. http://blogs.msdn.com/b/pfxteam/archive/2012/02/11/10266923.aspx

  2. https://msdn.microsoft.com/en-us/magazine/jj991977.aspx

1 个答案:

答案 0 :(得分:-1)

好的,所以我通过以下方式完成了:

await Task.Run();

在Run方法中我传递了async()=&gt; {我的方法}; 用户界面等待它,它运作良好。 我不幸地对待我的逻辑。

AutoResetEvent对我没用。