Tôi gặp lỗi trong ứng dụng của mình dường như chỉ hiển thị khuôn mặt khi tôi tạm dừng ứng dụng trong trình gỡ lỗi trong vài phút. Tôi nghi ngờ điều này là do một thư viện mạng bên thứ ba tôi đang sử dụng có một sợi nhịp tim, mà sẽ bị ngắt kết nối khi nó không thể ping máy chủ trong khi đó là nhịp tim thread được tạm dừng.Tạm dừng tất cả chuỗi trong quy trình hiện tại tại thời điểm chạy
Tôi đang cố gắng viết một ứng dụng trường hợp thử nghiệm để xác minh rằng đây là nguyên nhân của lỗi. Để làm như vậy, tôi cần một cách để tạm dừng tất cả các chủ đề trong ứng dụng (mà sau này tôi sẽ thu hẹp để tạm dừng chỉ luồng mà tôi nghi ngờ có thể là chuỗi nhịp tim) để mô phỏng tạm dừng ứng dụng trong trình gỡ rối.
Có ai biết cách thực hiện việc này không? Thậm chí có thể cho một sợi tơ khác gây ra ngủ không?
Cảm ơn, Alex
UPDATE:
tôi đã kết thúc quyết định rằng tôi đã không thực sự cần một ứng dụng để làm điều này đối với tôi, nhìn thấy như là điểm đã được chỉ để xác minh rằng tạm dừng trong trình gỡ lỗi đã gây ra sự ngắt kết nối. Vì vậy, đây là những gì tôi đã làm ... (Những cách đơn giản nhất thường là tốt nhất ... hoặc ít nhất là đơn giản nhất ...)
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();
}
Và kết quả:
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!
Có vẻ hứa hẹn, cảm ơn, tôi sẽ trả lại số này – AlexC
Vui lòng quay lại đây và cho chúng tôi biết nếu nó hoạt động. :) – bitbonk
Bạn cũng cần GetCurrentThreadId() để bạn không bị treo. Ngưng ngẫu nhiên là khá có khả năng, không phân bổ bất cứ điều gì. –