Многопоточность Winforms: нужно ли создавать нового делегата каждый раз при вызове метода в потоке пользовательского интерфейса?

Я хочу вызвать метод, который управляет элементом управления в потоке пользовательского интерфейса. Мой код работает, и я хочу его оптимизировать. Я имею в виду этот ресурс в 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"});

Будет ли это потокобезопасным? Было бы верно, что это имеет немного лучшую производительность, поскольку экземпляр делегата создается только один раз?

5
задан Marcel 26 November 2010 в 09:27
поделиться