У меня есть простой класс:Может ли запущенный объект собирать мусор?
public class Runner
{
public void RunAndForget(RunDelegate method)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(Run), method);
}
private void Run(object o)
{
((RunDelegate)o).Invoke();
}
}
И если я использую это так:
private void RunSomethingASync()
{
Runner runner = new Runner();
runner.FireAndForget(new RunDelegate(Something));
}
Есть ли опасность его использования, как это? Мои кишки C++ говорят мне, что объект runner должен быть уничтожен после завершения RunSomethingASync. Я прав? Что происходит тогда с методом, запущенным на другом потоке?
Или, может быть, это наоборот, и бегун не будет собран? Это будет проблемой, поскольку я могу многократно вызвать RunSomethingASync().
большое спасибо, очень хороший ответ – Kugel