C# 事件是否在另一个线程中运行?(.Net精简框架)

C# 事件是否在另一个线程中运行?(.Net精简框架),c#,winforms,events,windows-mobile,multithreading,C#,Winforms,Events,Windows Mobile,Multithreading,我正在用.Net Compact Framework 2.0 SP2和C开发Windows Mobile 5.0或更高版本 当我尝试在处理事件的方法上访问控件的宽度时,它会引发以下异常: 必须使用Invoke与在单独线程上创建的控件进行交互 此方法是否在另一个线程中运行 谢谢大家! 事件在触发它的线程上运行。因此,如果事件是在与创建控件的线程不同的线程上触发的,那么它将在不同的线程中运行,是的。事件将在触发它的线程上运行。因此,如果事件是在创建控件的线程之外的其他线程上触发的,那么它将在不同的线

我正在用.Net Compact Framework 2.0 SP2和C开发Windows Mobile 5.0或更高版本

当我尝试在处理事件的方法上访问控件的宽度时,它会引发以下异常:

必须使用Invoke与在单独线程上创建的控件进行交互

此方法是否在另一个线程中运行


谢谢大家!

事件在触发它的线程上运行。因此,如果事件是在与创建控件的线程不同的线程上触发的,那么它将在不同的线程中运行,是的。

事件将在触发它的线程上运行。因此,如果事件是在创建控件的线程之外的其他线程上触发的,那么它将在不同的线程中运行,是的。

是的,未创建控件的线程无法访问控件。好吧,更准确地说,如果你真的想要的话,他们可以,但是你会冒着应用程序因死锁而随机锁定的风险

要解决此问题,请使用Invoke或BeginInvoke方法为UI线程设置回调

e、 g


是的,未创建控件的线程无法访问控件。好吧,更准确地说,如果你真的想要的话,他们可以,但是你会冒着应用程序因死锁而随机锁定的风险

要解决此问题,请使用Invoke或BeginInvoke方法为UI线程设置回调

e、 g

private void HandleSomeEvent(object sender, EventArgs e)
{
    if(textBox1.InvokeRequired)
    {
        textBox1.BeginInvoke(new EventHandler(HandleSomeEvent), new object[]{sender, e});
    }
    else
    {
        textBox1.Text = "WIN!";
    }
}