0

スレッドが多いアプリケーションを使用しています。それらのスレッドの1つで、メインスレッドでいくつかの行を実行する必要があります。

これは、作成者スレッドが終了したときにWindowsXPがI/ Oリソースを解放するためです(重複したI / O)。シングルトンの作成でインスタンス化する必要があります。

どうすればこれを行うことができますか?

トピック外の回答の前:

これはGUIに関連していないのでmyControler.BeginInvoke、GUI要素がないので次のようなものを提案しないでください

4

2 に答える 2

3

メインスレッドでコードを実行することはできません。おそらく他のことをするのに忙しいからです。このタスクにはいくつかのフレームワークが必要です。WindowsUIメッセージングは​​そのようなフレームワークの例です。

アプリケーションがUI以外の場合は、静的メッセージキューを実装し、そこにデリゲートを配置し、メインスレッドからそのキューを継続的にチェックして、そこからデリゲートをプールして実行できます。

ただし、より良いアプローチは、アプリケーションアーキテクチャを再評価することです。たぶん、IOオブジェクトを使った作業を1つのスレッドに分離することができます。

于 2013-03-25T16:33:42.210 に答える
0

私はついにこれをしました:

  1. BlockingCollection作成する必要のあるすべてのIPを追加しました
  2. シングルトンを「開始」するときは、そのコレクションにIPを追加するだけです。
  3. そして、BackgroundプロパティをTrueにして、このコレクションを反復処理する新しいスレッドを開始します

このスレッドは、次の反復の待機時にブロックされるだけなので、多くのリソースを消費せず、アプリケーションの期間中は存続します。

WindowsXP以下でこれを行うための条件を追加しました。

于 2013-03-26T07:05:51.267 に答える