2010-12-28 2 views
16

Я использую класс gmail, чтобы мое приложение могло отправлять мне уведомление через gmail.Закрывает ли нить автоматически?

Its сделать так:

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

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

и резьбовая функция выглядеть следующим образом:

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

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

Таким образом, после SendMessageThreaded запускается, делает это близко по себе или же я должен

t.Start() 
t.Abort() 

что ли?

ответ

25

Поток должен быть запущен один раз - в этот момент он выполнит назначенный ему блок кода и выйдет.

Вам не нужно явно очистить резьбу в большинстве случаев (если вы не хотите, чтобы выручать рано, например)

7

Да, нить закрыта сама по себе.

Именно тогда были выработаны все инструкции в методе, выполняемые в потоке secodn.

6

Нить выйдет за рамки и будет доступна для сбора мусора, как только SendFromGmail отделки.

Да, он автоматически закрывается.

1

Abort() метод выдает ThreadAbortException, что вы можете обращаться:

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

с помощью

t.Abort(myObject) 

вы можете «послать» любой объект, который поможет вам справиться с обработкой прерывания. Вы можете использовать свойство ExceptionState для доступа к этому объекту.

5

Не нужно, он вернется в пул потоков и ждет другую задачу, если никто не убьет сам.

+0

Нет, это не пул. Он не будет использоваться повторно. –

7

да, определенно. он закроется, когда закончится.

1

Да, он будет закрыт, но вам нужно только тайм-аут, чтобы избежать зомби в любом случае, если основной поток выйдет из строя, пока второй поток ждет его.

Смежные вопросы