2012-02-08 9 views
0

私は奇妙な問題に直面しています。私は複数のカルチャをサポートする小さなFormベースのGUIアプリケーションを持っています。フォームベースのアプリケーションの2番目のインスタンスにUIが表示されない

このアプリケーションをターゲットシステムで実行すると、アプリケーションの2番目のインスタンスにGUIが表示されません。

BUT =>私はMessageBox.Show("")を追加してからshowDialog()を呼び出す前に、毎回うまく動作します。

MessageBox.Show()が何をしているのかわかりません。

また、アプリケーションはビルドシステムで正常に動作しています。

追加情報:

私は `System.ComponentModel.ComponentResourceManagerコメント場合は、物事が正常に動作します。

私は2番目のインスタンスが動作していますが、私が追加したログは表示されないので、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 
      } 
     } 

     } 

がスタックトレースです(私はこれを理解するには十分だ:)

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 
+0

アプリケーションの2番目のインスタンスをどのように起動しますか? –

+0

もう一度クリックするだけです。 – Satbir

+1

'ShowDialog'呼び出しはどのように適用されますか?いくつかのコードを投稿できますか? –

答えて

0

自分のメインに[STAThred]属性を追加します。方法。

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

回答ありがとうございますが、これは既に存在しています(私はサンプルコードを入れていません) – Satbir

関連する問題