2013-12-17 30 views
0

我正在为WP8中的Sky Drive开发一个演示应用程序。我在if条件得到一个错误:如果在wp8中使用复选框,则可以使用复选框

if (client == null && cbSync.IsChecked==true) 
{ 
    Auth(); 
    LiveOperationResult res = await client.UploadAsync("me/skydrive", fileName, e.ImageStream, OverwriteOption.Overwrite); 
} 
else if((bool)cbSync.IsChecked==true) 
{ 
    LiveOperationResult res= await client.UploadAsync("me/skydrive", fileName, e.ImageStream,OverwriteOption.Overwrite); 

} 

Screenshot

+0

(客户端== null && cbSync.IsChecked == true)是这种情况是正确的..客户端== null ..它不应该客户端!=空 – loop

回答

1

这是很难确定的,但它看起来像这样的代码是在后台线程执行,但UI对象必须从用户界面访问线。

我认为最简洁的解决方案是使用TaskCompletionSource将事件转换为Task。然后,在开始最终触发事件的操作的代码中,您将代替awaitTask,然后执行当前在事件处理程序中的代码。

这样,代码在UI线程中执行(因此您可以访问那里的UI对象),它也更好地结构化(所有相关的代码都在一个方法中)。

如果这不起作用,您可以从UI线程调用TaskFactory.FromCurrentSynchronizationContext(),保存得到的TaskFactory,然后在事件处理函数中使用它在UI线程上运行代码。