Дарин Димитров не прав - его код использует существующий делегат Action вместо пользовательского, но он все равно создает объект делегата Action каждый раз (в отличие от вашего второго фрагмента). Итак, вы можете использовать следующий код:
у вызвать метод, который управляет элементом управления в потоке пользовательского интерфейса. Мой код работает, и я хочу оптимизировать. Я имею в виду эторесурс на MSDN.
Согласно там, мы должны сделать
public delegate void myDelegate(int anInteger, string aString);
//...
Label1.Invoke(new myDelegate(myMethod), new Object[] {1, "This is the string"});
Приведет ли это к появлению потерянного объекта-делегата (утечка памяти) при каждом вызове?
Когда я делаю это со статическим экземпляром делегата, как показано ниже, а затем использую этот экземпляр при каждом вызове для вызова:
private static _delegateInstance = new myDelegate(myMethod);
//...
Label1.Invoke(_delegateInstance , new Object[] {1, "This is the string"});
Будет ли это потокобезопасным? Я был бы правдой, что это имеет немного лучшую производительность, так как экземпляр делегата создается только один раз?