Я пишу программу Visual С#, которая выполняет непрерывный цикл операций над вторичным потоком. Иногда, когда этот поток заканчивает задачу, я хочу, чтобы он запускал обработчик событий. Моя программа делает это, но когда запускается обработчик событий, вторичный поток ожидает завершения обработчика события до продолжения потока. Как это сделать? Вот как я в настоящее время структурирован...
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())
?