Такое ощущение, что вы должны немного взглянуть на свой дизайн.Обычно я стараюсь избегать, чтобы метод обработчика событий содержал фактическую выполняемую работу, но я скорее стараюсь, чтобы он был просто триггером, вызывая какой-то другой метод, выполняющий эту работу.Таким образом, вы также можете вызывать этот другой метод из любого другого места:
private void Timer_Tick(object sender, EventArgs e)
{
new Thread(MethodThatDoesTheWork).Start();
}
private void MethodThatDoesTheWork()
{
// actual work goes here
}
Теперь вы можете вызывать MethodThatDoesTheWork
из любого места в классе (синхронно или асинхронно, используя отдельный поток).
В качестве альтернативы, если MethodThatDoesTheWork
должен всегда быть асинхронным вызовом, вы можете создать поток внутри этого метода:
private void MethodThatDoesTheWork()
{
new Thread(() =>
{
// work code goes here
}).Start();
}
В этих примерах я создал потоки, созданные вручную.,Вы можете использовать этот подход, ThreadPool
, Task
или любой другой метод вызова кода асинхронно, в зависимости от того, что лучше всего подходит в вашем контексте.