本文介绍了从控制,在Windows Mobile不同的线程的表单元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

试图让一个线程来改变的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不同的线程的表单元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

11-01 14:47