Спасибо, это очень хороший пример, и я проверил в своем проекте и успешно работал с некоторыми изменениями моих потребностей ... Спасибо, брат

я есть этот метод работает в потоке, но когда я тестирую его, сообщают все порты как открытые. похоже, что метод:var result = client.BeginConnect(host, port, null, null); не работает хорошо при передаче результатов вvar success = result.AsyncWaitHandle.WaitOne(tcpTimeout); ...

Есть идеи, как это решить?

я пыталсяclient.ConnectAsync(host,port).Wait(TcpTimeout); но это не работает, как ожидалось тоже ....

    public void start()
    {
        Thread thread1 = new Thread(new ThreadStart(RunScanTcp));
        thread1.IsBackground = true;
        thread1.Name = "THREAD ME EMER : " + i;
        thread1.Priority = System.Threading.ThreadPriority.Highest;
        thread1.Start();
   }


public void RunScanTcp()
{
        while (((port = portList.NextPort()) != -1) && (nderprit != true))
        {
            TcpClient client = new TcpClient();
            count = port;
            tcp_count = tcp_count + 1;
            Thread.Sleep(10);
            try
            {
                var mre = new ManualResetEvent(false);
                Console.WriteLine("Current port count : " + port);
                var result = client.BeginConnect(host, port, null, null);
                var success = result.AsyncWaitHandle.WaitOne(tcpTimeout);
                if (success)
                {
                    Console.WriteLine("PORT IS OPEN : " + port);
                    received_tcp = received_tcp + 1;
                    Activity.RunOnUiThread(() =>
                    {

                        mre.Set();
                    });
                    mre.WaitOne();
                    client.Close();
                }
                else
                {
                    client.Close();
                }
            }
            catch (Exception)
            {
                client.Close();
            }
        }
}

Ответы на вопрос(1)

Ваш ответ на вопрос