2013-12-17 56 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線程上運行代碼。