Я много читал о Control.Invoke и Control.BeginInvoke и понимаю, что Invoke похож на SendMessage()
, а BeginInvoke
похож на PostMessage()
, но я не понимаю, где список параметров прошел через new object[] { arg, arg, arg, ...}
хранится. Во время обычного вызова параметры помещаются в стек и извлекаются из вызываемой функции, затем кадр вызова восстанавливается из стека после выхода, я предполагаю, что освобождаю любые ссылки на любые объекты кучи, позволяя их собирать. Итак, где хранится дата сдвинутого стека для Invoke
/ BeginInvoke
? Как он удаляется после вызова метода exits?
Кроме того, я успешно вызвал метод управления без загрузки нового массива объектов с параметрами передачи. Почему это работает? Еще лучше, поскольку он работает, почему все примеры, которые я когда-либо видел, показывают это с новым массивом объектов?
Это то, что я всегда видел и использовал:
BeginInvoke(FormReceiveEvent, new object[] { Event, Arg1, Arg2, Arg3 });
Но это тоже работает:
BeginInvoke(FormReceiveEvent, Event, Arg1, Arg2, Arg3);
Любая информация и комментарии всегда приветствуются ...
Заранее спасибо.