Приостановка всех потоков в текущем процессе во время выполнения

В моем приложении есть ошибка, которая, кажется, проявляется только тогда, когда я приостанавливаю приложение в отладчике на несколько минут. Я подозреваю, что это связано с тем, что я использую стороннюю сетевую библиотеку, у которой есть поток пульса, который отключается, когда он не может проверить связь с сервером, пока его поток пульса приостановлен.

Я пытаюсь написать тестовое приложение для этого чтобы убедиться, что это причина ошибки. Для этого Мне нужен способ приостановить все потоки в приложении (который я позже сузлю до приостановки только потока, который, как я подозреваю, может быть потоком пульса), чтобы имитировать приостановку приложения в отладчике.

Кто-нибудь знает, как это сделать этот? Возможно ли, чтобы один поток даже усыпил другой?

Спасибо, Alex

ОБНОВЛЕНИЕ:

В конце концов я решил, что мне действительно не нужно приложение, чтобы делать это за меня, поскольку целью было просто проверить, что пауза в отладчике вызывает отключение. Итак, вот что я сделал ... (Самые простые способы часто бывают лучшими ... или, по крайней мере, самыми простыми ...)

    private static void Main(string[] args)
    {
        IPubSubAdapter adapter = BuildAdapter();
        bool waitingForMessage;
        adapter.Subscribe(_topic, message => waitingForMessage = false, DestinationType.Topic);
        Stopwatch timePaused = new Stopwatch();
        while (adapter.IsConnected)
        {
            Console.WriteLine("Adapter is still connected");
            waitingForMessage = true;
            adapter.Publish(_topic, "testmessage", DestinationType.Topic);
            while (waitingForMessage)
            {
                Thread.Sleep(100);
            }
            timePaused.Reset();
            timePaused.Start();
            Debugger.Break();
            timePaused.Stop();
            Console.WriteLine("Paused for " + timePaused.ElapsedMilliseconds + "ms.");
            Thread.Sleep(5000); // Give it a chance to realise it's disconnected.
        }
        Console.WriteLine("Adapter is disconnected!");
        Console.ReadLine();
    }

И вывод:

Adapter is still connected
Paused for 10725ms.
Adapter is still connected
Paused for 13298ms.
Adapter is still connected
Paused for 32005ms.
Adapter is still connected
Paused for 59268ms.
Adapter is disconnected!
7
задан AlexC 10 November 2010 в 13:18
поделиться