2015-04-18 85 views
1

我正在爲使用C++/cx的WP 8.1編寫簡單的應用程序。當我在某些事件中嘗試做某件事時,我的問題就開始了。例如,如果我創建簡單的按鈕事件「點擊」,並且我想在裏面做一些事情,例如更改按鈕背景的顏色,它不會在正確的時間執行。我的意思是,對於下面的代碼,它將首先執行Somefunction(),然後更改按鈕的顏色。例如,當我嘗試使用消息對話框和ShowAsync函數顯示消息框時,會發生這種情況。Windows phone C++

but->Background = ref new SolidColorBrush(Windows::UI::Colors::Red); 
Somefunciton(); 
+0

「我」應該是「我」,你也應該圍繞代碼與' – Maroun

回答

1

你有相同功能的背景變化和函數調用,並且該函數在一個阻塞它的線程上執行。這個線程恰好是在您的函數執行時被阻塞的UI線程。所以你設置了按鈕背景,但只有在UI線程可以運行渲染函數時纔會應用實際更改,並且只有在函數調用結束後才能進行實際更改。

所以在程序執行方面,在調用Somefunciton();之前按鈕背景被更新。但是視覺變化被延遲到功能調用完成之後,所以你可能會認爲Somefunciton();在背景被設置之前被調用,而不是這種情況。

+0

有什麼辦法讓視覺變化,因爲我想? – wgrzesiak147

+0

您應該異步運行您的'SomeFunc()',以便UI線程不會被阻塞。如何異步運行它?它完全取決於'SomeFunc()'的內容。 – ixSci

+0

可以說它不做任何重要的事情,只是一些數學變量如何使它異步? – wgrzesiak147