15

私は実行するこのコードを持っています.exe

string openEXE = @"C:\Users\marek\Documents\Visual Studio 2012\Projects\tours\tours\bin\Debug\netpokl.exe";
                 Process b = Process.Start(openEXE);
                 b.EnableRaisingEvents = true;
                 b.Exited += (netpokl_Closed);

そして、閉じるときにメソッド netpokl_Closed を呼び出します。問題は、I insert into netpokl_Closed command-this.Close()この例外が発生したときです。Cross-thread operation not valid: Control accessed from a thread other than the thread it was created on

どうすれば修正できますか?お時間とご回答ありがとうございます。

4

3 に答える 3

45

フォームが作成されたスレッド以外のスレッドからフォームを閉じようとしているため、例外が発生しています。これは許可されていません。

このようにしてください

this.Invoke((MethodInvoker) delegate
        {
            // close the form on the forms thread
            this.Close();
        });
于 2013-08-19T08:53:22.237 に答える
-1

を使用してフォームを閉じることができますDelegate

      public delegate void CloseDelagate(); 

      Form1.Invoke(new CloseDelegate(Form2.Close));
于 2013-08-19T08:52:11.210 に答える