如果wp8中的条件无法使用复选框

时间:2013-12-17 07:24:35

标签: xaml windows-phone-8 c#-5.0 onedrive

我正在为WP8中的Sky Drive开发一个演示应用程序。我在if条件中出错:

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

1 个答案:

答案 0 :(得分:1)

很难确定,但看起来这个代码是在后台线程上执行的,但是必须从UI线程访问UI对象。

我认为最干净的解决方案是使用Task将事件转换为TaskCompletionSource。然后,在启动最终触发事件的操作的代码中,您将await Task,然后执行当前在事件处理程序中的代码。

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

如果这对你不起作用,你可以从UI线程调用TaskFactory.FromCurrentSynchronizationContext(),保存生成的TaskFactory,然后在事件处理程序中使用它来运行UI线程上的代码。