基于表单的应用程序的第二个实例不显示UI

时间:2012-02-08 13:51:25

标签: c# .net windows winforms

我面临一个奇怪的问题。我有一个小型的基础GUI应用程序,具有多种文化支持。

现在,当我在目标系统上运行此应用程序时,Application的第二个实例不显示任何GUI。

BUT =>我在MessageBox.Show("")电话之前添加showDialog(),每次都可以正常工作。

我不确定MessageBox.Show()电话的作用是什么。

此外,应用程序在构建系统上运行良好。

额外信息:

如果我评论`System.ComponentModel.ComponentResourceManager,一切正常。

我看到第二个实例正在运行但是甚至没有进入Main,因为我没有看到我添加的日志。

示例代码:

   class MyForm : Form
    {
        private Button buttonCancel;
        private Button buttonOK;
        private void InitializeComponent()
        {

        }
        public static void Main()
        {
            var ui = new MyForm();
            var formResult=ui.ShowDialog();
            if (formResult == DialogResult.OK) ;
            {

                // Do something
            }
        }

        }

这是Stack Trace :(我很好理解这个:)

0:000> kb
ChildEBP RetAddr  Args to Child              
0012d4d0 7c90df4a 7c809590 00000002 0012d4fc ntdll!KiFastSystemCallRet
0012d4d4 7c809590 00000002 0012d4fc 00000001 ntdll!ZwWaitForMultipleObjects+0xc
0012d570 7e4195f9 00000002 0012d598 00000000 kernel32!WaitForMultipleObjectsEx+0x12c
0012d5cc 7752e73e 00000001 0020d1b0 ffffffff user32!RealMsgWaitForMultipleObjectsEx+0x13e
0012d5f4 77557297 0020d1b0 ffffffff 0012d620 ole32!CCliModalLoop::BlockFn+0x80
0012d668 79f1a2fd 00000002 ffffffff 00000001 ole32!CoWaitForMultipleHandles+0xcf
0012d688 79f1a264 00000000 ffffffff 00000001 mscorwks!NT5WaitRoutine+0x51
0012d6f4 79f1a1c8 00000001 0020d1b0 00000000 mscorwks!MsgWaitHelper+0xa5
0012d714 79fcccd0 00000001 0020d1b0 00000000 mscorwks!Thread::DoAppropriateAptStateWait+0x28
0012d798 79fccd65 00000001 0020d1b0 00000000 mscorwks!Thread::DoAppropriateWaitWorker+0x13c
0012d7e8 79fccee9 00000001 0020d1b0 00000000 mscorwks!Thread::DoAppropriateWait+0x40
0012d844 79e7549a ffffffff 00000001 00000000 mscorwks!CLREvent::WaitEx+0xf7
0012d858 79fd774d ffffffff 00000001 00000000 mscorwks!CLREvent::Wait+0x17
0012d8e4 79f016f0 001593a0 ffffffff 001593a0 mscorwks!AwareLock::EnterEpilog+0x8c
0012d900 79f01674 4ea81039 0012d9c0 001593a0 mscorwks!AwareLock::Enter+0x61
0012d9a0 00ce3a15 013a44f4 00000000 00000000 mscorwks!JIT_MonEnterWorker_Portable+0xb3
WARNING: Frame IP not in any known module. Following frames may be wrong.
0012d9f0 79e80838 00361efe 0012da24 4e8438a1 0xce3a15
0012da2c 79e71b4c 001f4778 00231290 0012dabc mscorwks!PreStubWorker+0x141
0012da3c 79e8968e 00000000 00000000 0012dbec mscorwks!CallDescrWorker+0x33
0012dabc 79e89e8b 00000000 00000000 0012dbec mscorwks!CallDescrWorkerWithHandler+0xa3

1 个答案:

答案 0 :(得分:0)

[STAThred] 属性添加到Main方法。

[STAThread]  
public static void Main()
{
  ...
}