簡體   English   中英

如何在窗口關閉按鈕上單擊以殺死WPF應用程序中的所有線程

[英]How to kill all threads in wpf application on window close button click

我已經創建了一個WPF應用程序。我的應用程序中運行着兩個線程:

  1. 第一個線程異步偵聽PORT 40010上的TCP數據包並將數據推送到MSMQ
  2. 來自MSMQ的第二個線程彈出數據

當我通過單擊窗口關閉按鈕關閉應用程序時,它沒有顯示錯誤。 但是,當我再次啟動應用程序時,它將引發異常:

Unable to start Listrner : Only one usage of each socket address 
    (protocol/network address/port) is normally permitted

當我重新啟動PC時,它第一次成功運行,但是在關閉應用程序后,它不再起作用

您不得殺死線程。

您應該做的是為他們提供一種不錯的方法。 在應用程序關閉時,應設置一些變量:

volatile bool shouldClose;

並在線程中使用該變量說,然后彈出下一個程序包並在那里停止無限循環。

對於主應用程序,它應該等待線程完成。

有關volatile關鍵字,請參見文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM