2010-12-28 31 views
16

Tôi đang sử dụng lớp gmail để ứng dụng của tôi có thể gửi thông báo cho tôi qua gmail.Chuỗi có tự động đóng không?

của nó được thực hiện như thế này:

public static void SendMessage(string message) 
{ 
    Notification.message = message; 

    Thread t = new Thread(new ThreadStart(SendMessageThreaded)); 
    t.Start(); 
} 

và chức năng nhìn ren như thế này:

private static void SendMessageThreaded() 
{ 
    try 
    { 
     if (Notification.message != "") 
      RC.Gmail.GmailMessage.SendFromGmail("accname", "accpass", "email", "subject", Notification.message); 

     Notification.message = ""; 
    } 
    catch 
    { } 
} 

Vì vậy, sau SendMessageThreaded đang chạy, làm cho nó gần gũi bởi chính nó hoặc làm tôi phải

t.Start() 
t.Abort() 

hoặc gì đó?

Trả lời

25

Chủ đề cần phải được bắt đầu một lần - tại thời điểm đó, nó sẽ thực thi khối mã được gán cho nó và thoát.

Bạn không cần phải dứt khoát dọn dẹp các chủ đề trong hầu hết các trường hợp (trừ khi bạn muốn giải cứu đầu chẳng hạn)

7

Có, bản thân chỉ đóng.

Đó là khi tất cả các hướng dẫn trong phương pháp chạy trên chuỗi secodn đã được gọi.

6

Chủ đề sẽ nằm ngoài phạm vi và có sẵn để thu thập rác ngay sau khi kết thúc SendFromGmail.

Vì vậy, có, nó tự động đóng.

1

Các Abort() phương pháp ném một ThreadAbortException mà bạn có thể xử lý:

public void SendMessageThreaded() 
{ 
    try 
    { 
     // thread logic 
    } 
    catch (ThreadAbortException tae) 
    { 
     // thread was aborted, by t.Abort() 
    } 
    catch (Exception ex) 
    { 
     // other error 
    } 
} 

Bằng cách sử dụng

t.Abort(myObject) 

bạn có thể "gửi" bất kỳ đối tượng giúp bạn xử lý việc xử lý hủy bỏ. Bạn có thể sử dụng tài sản ExceptionState để truy cập đối tượng đó.

5

Không cần, nó sẽ trở lại hồ bơi chủ đề và chờ nhiệm vụ khác, nếu không có tác vụ nào sẽ tự hủy.

+0

Không, đây không phải là chuỗi Chủ đề. Nó sẽ không được tái sử dụng. –

7

vâng, chắc chắn. nó sẽ tự đóng khi nó kết thúc.

1

Có nó sẽ đóng, nhưng bạn nên nhưng một thời gian chờ để tránh zombie anyway nếu thread chính sụp đổ trong khi thread thứ hai đang chờ đợi nó.

Các vấn đề liên quan