[c#] socks5-чекер работает только под отладчиком

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by realcoder, 1 Feb 2012.

  1. realcoder

    realcoder Member

    Joined:
    9 Dec 2010
    Messages:
    226
    Likes Received:
    11
    Reputations:
    4
    привет всем! столкнулся с проблемой, что когда запускаю свой скос5-чекер напрямую - он просто выводит количество всех проксей и все.
    а когда трассирую под отладчиком проверку 1-2 прокси и дальше пущу на самотек, то работает так как надо. как это иисправить?
    вот исходники самого чекера
    http://zalil.ru/32619707
     
  2. X-rus

    X-rus Member

    Joined:
    22 Dec 2010
    Messages:
    88
    Likes Received:
    22
    Reputations:
    4
    Метод Control.BeginInvoke выполняет делегат асинхронно.

    PHP:
                string[] lines = new string[0];//объявляем и инициализируем массив
                
    if (InvokeRequired)//получаем список через control.invoke
                
    {
                    
    BeginInvoke(new MethodInvoker(() =>
                    {
                       
    lines richTextBox1.Lines;
                    }));
                }
    /...
                 foreach (
    string line in lines)
                {
    /...
    Так как делегат будет выполнен асинхронно, то не обязательно lines будет присвоено значение до цикла. Поэтому в цикл может попасть пустой массив, что, в общем-то, и происходит.

    Решение: использовать Control.Invoke