这是我第一次在 C# 应用程序中使用线程。基本上它是一个应用程序,它检查列表中的一堆网站是死是活。
这是我第一次尝试使用多线程
public void StartThread(string URL,int no)
{
Thread newThread = new Thread(() =>
{
BeginInvoke(new Action(() => richTextBox1.Text += "Thread " + no + " Running" + Environment.NewLine));
bool b = ping(URL);
if (b == true) { BeginInvoke(new Action(() => richTextBox2.Text += "Okay" + Environment.NewLine)); }
else
{ return; }
});
newThread.Start();
}
我正在使用上述函数来创建新线程,并且每个线程都是在循环中创建的。
foreach (网站中的字符串网站) { StartThread(site,i); 我++;// 柜台 }
因为我是初学者,所以我有几个问题。
- 代码工作正常,但我不确定这是否是最好的解决方案
- 有时线程运行完美,但有时线程不从方法ping()返回任何值,该方法检查主机并在使用 WebRequest 在线时返回 true。平常吗?
- 如果我要求用户指定他需要使用的线程数,我如何在这些线程之间平均分配工作?
- 他们是我跟踪线程状态(死/活)的一种优雅方式吗?我目前使用
rocess.GetCurrentProcess().Threads.Count;