0

mono 2.10.8.1 フレームワークを使用して、1 つの小さな GUI スタンドアロン アプリケーションを開発しています。

バックグラウンドで何らかの操作を実行するために使用できるスレッドを1つ作成し、操作の完了後に呼び出し元のスレッドを中止するデスクトップGUIアプリケーションを1つ作成しました。

もう 1 つ、Abort() 関数は Windows では問題なく正常に動作しますが、Linux では動作しませんでした。

Thread t1 = new Thread(Linux_Thread);
t1.IsBackground = true;
t1.Start();

//Do some operation in some other function.
Console.WriteLine("Linux thread :: " + t1.ThreadState);
t1.Abort();
Console.WriteLine("Linux thread After Abort :: " + t1.ThreadState);

SO、Linuxでの上記のプログラムの出力は次のとおりです::

Linux thread :: Background
Linux thread After Abort :: Background, AbortRequested

Windows では、上記のプログラムの出力は次のとおりです::

Linux thread :: Background
Linux thread After Abort :: Stopped

そのため、Abort() 関数は Windows プラットフォームで動作しているため、mono フレームワークでは動作していないようです。

その後、アボート スレッドの問題が原因でアプリケーションが正しく動作せず、アプリケーションがハング状態になります。

この問題について考えている人はいますか、またはこの種の問題に直面した人はいますか?

実行中のスレッドを閉じる別の方法はありますか?

できるだけ早く答えを教えてください。

4

1 に答える 1