【问题标题】:Threading with Windows Forms使用 Windows 窗体进行线程化
【发布时间】:2009-09-01 06:57:12
【问题描述】:

我用 C# 编写了一个 Windows 窗体应用程序。当我运行一个单独的线程时,该线程包含一个在我的表单上切换面板的不可见性的方法,它第一次有效,但第二次无效。为什么以及如何解决?

【问题讨论】:

  • 您使用什么语言编写应用程序?你有一些代码要发布吗?
  • 巴别鱼是一种毒药。
  • @oxbow_lakes:请不要发明新标签:meta.stackexchange.com/questions/18878/…
  • 翻译:你好,我写了一个Windows窗体应用程序。当我运行一个单独的线程时,该线程包含一个在我的表单上切换面板的不可见性的方法,它第一次有效,但第二次无效。为什么以及如何解决? (会改变问题本身,但没有足够的代表)
  • @Modir:请向我们展示您用于切换面板可见性的代码,以及您用于第一次和第二次分叉线程的代码。

标签: c# winforms multithreading


【解决方案1】:

谢谢,通过以下代码解决了我的问题:

Panel tmp = null;
switch (d.Person)
{
    case 1: tmp = backPic1;
        break;
    case 2: tmp = backPic2;
        break;
    case 3: tmp = backPic3;
        break;
}
if (InvokeRequired)
{
    tmp.Invoke(new MethodInvoker(delegate() { tmp.Visible = true; }));
}
else
{
    tmp.Visible = true;
}

【讨论】:

    【解决方案2】:

    我猜他是从后台线程调用的 UI 代码。 ;)

    【讨论】:

      【解决方案3】:

      您的问题有点含糊,但听起来您想从不同的线程控制 UI,在这种情况下,您需要同步请求。在不知道您使用的编程语言的情况下,很难告诉您如何做到这一点。

      【讨论】:

        猜你喜欢
        • 2011-08-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-09
        相关资源
        最近更新 更多