在Windows Phone 8中调用同步方法中的异步方法

时间:2013-11-06 12:07:00

标签: c# windows-phone-7 windows-phone-8

这是在同步方法中调用异步方法的更好方法。

public bool Sync() 
{ 
  return Task.Run(() => MyClass.IsSyncDone()).Result; 
}

会导致死锁吗?我真的需要知道更好的方法。因为我不想对系统调用进行异步,例如App启动,注册方法等。 谁能请你帮忙。

1 个答案:

答案 0 :(得分:2)

如果您不需要回复,那么您可以轻松地执行以下操作:

public bool Sync() 
{ 
    Task.Run(async () => await MyClass.DoSync());
}

您需要响应将意味着更复杂的代码。如果没有看到完整的代码,很难提供具体的示例,但通常最好不要将这种长时间运行的复杂异步操作与同步操作联系起来。
将延迟传递给async方法以通过任务创建,或者让async方法在完成时更新viewmodel的绑定属性或触发自定义事件。

重要的是不要在应用程序li​​vecycle事件处理程序中执行任何可能长时间运行的异步操作,就好像这些操作需要很长时间才能导致应用程序被强制终止或者应用程序数据处于不一致状态。