我需要一些关于程序中线程的指针

时间:2012-01-24 07:38:26

标签: c# multithreading

我正在尝试创建一个可以单独扫描给定IP地址端口的应用程序:

private void ScanPort(IPAddress address, int port)
{
    using (TcpClient client = new TcpClient())
    {
        IAsyncResult result = client.BeginConnect(address, port, null, null);

        if (result.AsyncWaitHandle.WaitOne(1000, false)) txtDisplay.AppendText("Port: " + nudFrom.Value.ToString() + " is open." + Environment.NewLine);
        else txtDisplay.AppendText("Port: " + nudFrom.Value.ToString() + " is closed." + Environment.NewLine);
    }
}

现在,使用此代码扫描IP需要一些时间,特别是如果我有100个以上的端口要扫描。

我虽然在研究线程。问题是我对如何使用线程有点空白,但我确实阅读了MSDN或其他文章中的一些文章,这些文章展示了如何进行基本线程。

现在,我不确定如何在我的程序中实现线程。我可以创建一个指向我的ScanPort方法的事件处理程序,但是如果我初始化1个或多个线程,它将从端口的开头开始ping。另一个虽然我有,但我应该开始多少线程。

你明白了吗?我需要一些关于如何在我的程序中实现线程的基本思路。

1 个答案:

答案 0 :(得分:2)

单线程程序可以通过多种方式在.Net中实现多线程。如果您有兴趣学习.Net中的线程机制,那么这可能是一个很好的机会,但是正如其他人建议寻找多线程的使用本身并不是一个有价值的活动。编程很难,不会将并行性和/或并发性混合在一起。

如果你想在.Net中研究多线程,你需要阅读:

System.Threading.Thread

System.Threading.Threadpool

Other methods...