【问题标题】:Uuable to use check box in if codition in wp8无法在wp8中的if条件中使用复选框
【发布时间】:2013-12-18 00:42:12
【问题描述】:

我正在为 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);

}

【问题讨论】:

  • (client == null && cbSync.IsChecked==true ) 这个条件是对的..of client == null..它不应该是 client !=null

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


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-08
    相关资源
    最近更新 更多