Я пишу программу на Visual C #, которая выполняет непрерывный цикл операций во вторичном потоке. Иногда, когда этот поток завершает задачу, я хочу, чтобы он вызывал обработчик событий. Моя программа делает это, но когда запускается обработчик события, вторичный поток ждет, пока обработчик события не завершится, прежде чем продолжить поток. Как мне сделать так, чтобы это продолжалось? Вот как у меня сейчас это структурировано ...
class TestClass
{
private Thread SecondaryThread;
public event EventHandler OperationFinished;
public void StartMethod()
{
...
SecondaryThread.Start(); //start the secondary thread
}
private void SecondaryThreadMethod()
{
...
OperationFinished(null, new EventArgs());
... //This is where the program waits for whatever operations take
//place when OperationFinished is triggered.
}
}
Этот код является частью API для одного из моих устройств. Когда вызывается событие OperationFinished, я хочу, чтобы клиентское приложение могло делать все, что ему нужно (т.е. соответствующим образом обновлять графический интерфейс), не нарушая операции API.
Кроме того, если я не хочу передавать какие-либо параметры обработчику событий, правильный ли мой синтаксис с помощью OperationFinished(null, new EventArgs())
?