データベースのレコード数に基づいてスレッドの配列を作成しています。その後、各スレッドはipaddressをポーリングしてから、しばらくスリープした後、再度ポールします。私は定期的にデータベースのホスト数の変化をチェックします。私は別のスレッドを開始するより多くのホストがある場合。ホストが少ない場合、そのホストを監視していた特定のスレッドを強制終了する必要があります。どのように私は特定のスレッドを殺すのですか?スレッドの配列から特定のスレッドを削除する方法
enter code here protected static void GetThreads()
{
Thread[] threads;
do
{
dt = getIP_Poll_status();
threads = new Thread[dt.Rows.Count];
Console.WriteLine(dt.Rows.Count + " Threads");
for (int i = 0; i < threads.Length; ++i)
{
string ip = dt.Rows[i][0].ToString();
int sleep = Convert.ToInt32(dt.Rows[i][1].ToString());
string status = dt.Rows[i][2].ToString();
string host = dt.Rows[i][3].ToString();
Hosts.Add(host);
string port = dt.Rows[i][4].ToString();
//Console.WriteLine("starting on " + ip + " delay " + sleep+".current status "+status);
threads[i] = new Thread(PollingThreadStart);
threads[i].Start(new MyThreadParameters(ip, sleep, status, host, port));
threads[i].Name = host;
}
Thread.Sleep(50000);
}
while (true);
}
もう少し詳しいことを教えてください。私がIPアドレスのリストを持っていれば、それぞれに関連付けられた投票時間があります。これはどのようにして1つのスレッドで行いますか? –
あなたのスレッドは、どのIPをポーリングする必要があるか、どのくらいの頻度でポーリングする必要があるかを知っています。その時点でポーリングを行い、その後、どのIPをポーリングする必要があるのか、また、実行するまでどれくらいの時間を要するのかを調べます。 – PaulJWilliams
与えられた日にあなたにはいくつかの仕事があると想像してください。 1pm車を洗う。 1.30買い物に行く2pmオーブンなどを回す あなたの方法は、家族を切り上げて、それぞれに仕事と時間を割り当てるのと同じです。問題は、ほとんどの人が何もせずに座っている時間を過ごすだけで、到着するのを待っていることです。私が概説した方法は、基本的には順番に仕事をしているのですが、それぞれの終わりには、次のことをする時間まで冷たいビールを足に入れるだけです。あなたも家に詰まった家を持っていない;) – PaulJWilliams