Ответ 1
Поток должен запускаться один раз - в этот момент он будет выполнять назначенный ему блок кода и выйти.
Вам не нужно явно очищать поток в большинстве случаев (если вы не хотите, чтобы вы заработали раньше, например)
Я использую класс gmail, чтобы мое приложение могло отправлять мне уведомление через gmail.
Сделано так:
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()
или что-то?
Поток должен запускаться один раз - в этот момент он будет выполнять назначенный ему блок кода и выйти.
Вам не нужно явно очищать поток в большинстве случаев (если вы не хотите, чтобы вы заработали раньше, например)
Да, поток закрыт сам по себе.
Вот когда были вызваны все инструкции в методе, запущенные в потоке secodn.
да, определенно. он закроется, когда он закончится.
Поток выходит из области видимости и будет доступен для сбора мусора, как только заканчивается SendFromGmail
.
Итак, да, он автоматически закрывается.
Нет необходимости, он вернется обратно в пул потоков и ждет другую задачу, если никто не убьет сам.
Метод 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 для доступа к этому объекту.
Да, он закроется, но вам нужно только тайм-аут, чтобы избежать зомби в любом случае, если основной поток выйдет из строя, пока второй поток ждет его.