我開發汽車管理系統的程序。然後,我想在汽車進來並開車時向該公司的所有者發送郵件。 我的代碼可以成功發送郵件,但我注意到,在發送郵件時,其他JFrame窗口凍結(我無法對所有JFrame窗口執行任何操作)直到郵件發送完成。 這是通常的Javamail或有辦法讓其他JFrame仍然工作?所有JFrame凍結的同時做JavaMail
在我的程序中,大約需要10秒鐘才能完成發送一封郵件。
我開發汽車管理系統的程序。然後,我想在汽車進來並開車時向該公司的所有者發送郵件。 我的代碼可以成功發送郵件,但我注意到,在發送郵件時,其他JFrame窗口凍結(我無法對所有JFrame窗口執行任何操作)直到郵件發送完成。 這是通常的Javamail或有辦法讓其他JFrame仍然工作?所有JFrame凍結的同時做JavaMail
在我的程序中,大約需要10秒鐘才能完成發送一封郵件。
當你執行繁重的任務時,你應該在另一個線程中運行它們,而不是像gui一樣。如果你運行在Event Dispatch Thread那麼gui會凍結,直到完成。
你可以在這裏使用SwingWorker是一個例子,我真的很喜歡Swing Worker Example
例子:
class Worker extends SwingWorker<String, Object> {
@Override
protected String doInBackground() throws Exception {
//here you send the mail
return "DONE";
}
@Override
protected void done() {
super.done();
//this is executed in the EDT
JOptionPane.showMessageDialog(null, "Message sent", "Success", JOptionPane.INFORMATION_MESSAGE);
}
}
+1好(編輯&)答案。 –
謝謝!我也用你提供的鏈接閱讀你的代碼,它的工作。 – user2549814
你必須使用另一個線程 – nachokk
你需要發送只有一個e-mail或多少?如果您需要發送一些電子郵件,您可能應該顯示一些進度條或電子郵件的結果。 – Thorn