问题描述
试图让一个线程来改变的Windows Mobile窗体控件。
Trying to get a thread to change form controls in Windows Mobile.
抛出不支持的异常。
这是否意味着它不能在所有做什么?
Does this mean it cant be done at all?
如果不是,我怎么去呢?形式在父/主线程,然后创建了一个线程做后台的一些工作创建,但我想使它所以后台线程可以更新的形式来显示其完成...
If not, how do I go about this? Forms are created in the Parent/Main thread then a thread is created to do some work in the background but I want to make it so the Background thread can update the form to show its completed...
推荐答案
您不能在非GUI线程访问图形用户界面项目。您需要确定是否调用需要GUI线程。例如(这里的一些我早些时候):
You cannot access GUI items on a non-GUI thread. You will need to determine if an invocation is required to the GUI thread. For example (here's some I made earlier):
public delegate void SetEnabledStateCallBack(Control control, bool enabled);
public static void SetEnabledState(Control control, bool enabled)
{
if (control.InvokeRequired)
{
SetEnabledStateCallBack d = new SetEnabledStateCallBack(SetEnabledState);
control.Invoke(d, new object[] { control, enabled });
}
else
{
control.Enabled = enabled;
}
}
或
public delegate void AddListViewItemCallBack(ListView control, ListViewItem item);
public static void AddListViewItem(ListView control, ListViewItem item)
{
if (control.InvokeRequired)
{
AddListViewItemCallBack d = new AddListViewItemCallBack(AddListViewItem);
control.Invoke(d, new object[] { control, item });
}
else
{
control.Items.Add(item);
}
}
然后,您可以设置启用属性(从我的第一例如)使用 ClassName.SetEnabledState(这一点,真正的);
这篇关于从控制,在Windows Mobile不同的线程的表单元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!