В моем приложении есть ошибка, которая, кажется, показывает его лицо, только когда я приостанавливаю приложение в отладчике на несколько минут.Я подозреваю, что это связано со сторонней сетевой библиотекой, которую я использую, с потоком пульса, который отключается, когда он не может пропинговать сервер, пока его поток пульса приостановлен.
Я пытаюсь написать тестовый примерПриложение для этого, чтобы убедиться, что это является причиной ошибки.Для этого мне нужен способ приостановить все потоки в приложении (который я позже сужу до приостановки только потока, который, как я подозреваю, может быть потоком пульса), для имитации приостановки приложения в отладчике.
Кто-нибудь знает как это сделать?Возможно ли, чтобы один поток заставлял другой спать?
Спасибо, Алекс
ОБНОВЛЕНИЕ:
Я решил, что мне действительно не нужно приложение длясделайте это для меня, так как смысл был просто в том, чтобы убедиться, что приостановка в отладчике вызывала отключение.Итак, вот что я сделал ... (Простейшие способы часто самые лучшие ... или, по крайней мере, самые простые ...)
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!