私は数年来、C#マルチスレッドアプリケーションを開発しています。数日前、私は実行中に、新しいワーカースレッド(ほぼ1秒に1回)を連続的に作成することに気付きました。 Visual Studio 2013の「スレッド」ウィンドウを使用すると、これらのスレッドには名前と場所が「使用できません」と表示されるため、これらのスレッドの開始位置を確認することはできません。 私のコードで生成されたすべてのスレッドに名前を付けましたが、これらのスレッドは "名前なし"で作成されているため、外部アセンブリによって生成される可能性があります。どのメソッドがワーカースレッドを開始したかを知る方法
私のアプリケーションは、NLog.dll(txtファイルへのログ用)、System.Data.SQLite.dll(データ用のdb3データベースへの読み書き)を統合しています。また、データ交換のためにUDPとTCPソケットを使用します。
例: 実行中のアプリケーションの2分後に、私は70スレッドを持っています。その後、20分後にスレッドの数は190です!私がVisual Studioでスレッドウィンドウをチェックすると、新しいスレッドがすべて「カテゴリ」「ワーカースレッド」で「名前」が「名前なし」であることがわかります。ここで
私のVisual Studioスレッドウィンドウのスナップショット:
は、誰もが氾濫このスレッドの起源を見つけるために、どのように私をお勧めすることはできますか? ありがとうございます!
:
Tick
イベントハンドラで呼び出され、その後Change
方法に別のコールバック正しい値にresettedたあなたのコードではなく、根本的な原因を見つけるためにプロジェクトを細分化するだけです(サードパーティのライブラリの場合)。もう1つの可能性は、アンチウイルスツールで、.dllを作成されたプロセスに挿入してチェックしたり、開発中に怒ったりすることがあります。 – Oliver