Windows phone C++
Windows phone C++
我正在使用 C++/cx 为 WP 8.1 编写简单的应用程序。当我在某些事件中尝试做某事时,我的问题就开始了。例如,如果我创建简单的按钮事件 "tapped" 并且我想在内部做一些事情,例如更改按钮背景的颜色,它不会在正确的时间执行。我的意思是,对于下面的代码,它将首先执行 Somefunction()
,然后更改 button.Same 的颜色,例如当我尝试使用消息对话框和 ShowAsync 函数显示消息框时。
but->Background = ref new SolidColorBrush(Windows::UI::Colors::Red);
Somefunciton();
您在同一个函数中进行了后台更改和函数调用,并且该函数在一个阻塞它的线程上执行。该线程恰好是 UI 线程,它在您的函数执行时被阻塞。因此,您设置了按钮背景,但仅当 UI 线程可以 运行 渲染函数时才会应用实际更改,并且只有在您的函数调用结束后才能执行此操作。
因此,就程序执行而言,按钮背景在调用 Somefunciton();
之前得到更新。但是视觉变化会延迟到函数调用完成之后,因此您可能认为 Somefunciton();
在设置背景之前被调用,但事实并非如此。
我正在使用 C++/cx 为 WP 8.1 编写简单的应用程序。当我在某些事件中尝试做某事时,我的问题就开始了。例如,如果我创建简单的按钮事件 "tapped" 并且我想在内部做一些事情,例如更改按钮背景的颜色,它不会在正确的时间执行。我的意思是,对于下面的代码,它将首先执行 Somefunction()
,然后更改 button.Same 的颜色,例如当我尝试使用消息对话框和 ShowAsync 函数显示消息框时。
but->Background = ref new SolidColorBrush(Windows::UI::Colors::Red);
Somefunciton();
您在同一个函数中进行了后台更改和函数调用,并且该函数在一个阻塞它的线程上执行。该线程恰好是 UI 线程,它在您的函数执行时被阻塞。因此,您设置了按钮背景,但仅当 UI 线程可以 运行 渲染函数时才会应用实际更改,并且只有在您的函数调用结束后才能执行此操作。
因此,就程序执行而言,按钮背景在调用 Somefunciton();
之前得到更新。但是视觉变化会延迟到函数调用完成之后,因此您可能认为 Somefunciton();
在设置背景之前被调用,但事实并非如此。