Самый чистый способ вызвать межпоточные события

Пара замечаний:

  • Не создавайте простых делегатов явно в подобном коде, если вы не используете версию до версии 2.0, чтобы вы могли использовать:
   BeginInvoke(new EventHandler(mCoolObject_CoolEvent), 
               sender, 
               args);
  • Также вам events не нужно создавать и заполнять multi-threaded массив объектов, потому что multithreading параметр args имеет тип params, поэтому c# вы можете просто передать c#-language список.

  • Я, вероятно, предпочел event бы Invoke BeginInvoke, так как последнее приведет csharp к асинхронному вызову кода, который c#.net может быть или не быть тем, что multi-threaded вам нужно, но затруднит обработку csharp последующих исключений без c#-language вызова EndInvoke. Вместо этого ваше .cs-file приложение получит TargetInvocationException.

c#

multithreading

events

2022-10-18T20:04:21+00:00
Вопросы с похожей тематикой, как у вопроса:

Самый чистый способ вызвать межпоточные события