Вопрос

Если я напишу DynamicMethod с ILGenerator, а код, который я вывожу, является потокобезопасным, получится ли полученный делегат потокобезопасным?

Меня беспокоит то, что IL компилируется при первом запуске метода. Если это так, что произойдет, если какой-то другой поток попытается запустить делегат во время его компиляции?

Это было полезно?

Решение

Это не имеет никакого значения со стандартным делегатом. Они оба присутствуют в виде MSIL где-то и JIT скомпилируйте их, когда захотите.

Как только вы получите его в форме делегата, это будет фрагмент кода, который вы можете вызвать. Это все, что вам действительно нужно знать. Реализация .NET, в которой вы работаете (Rotor, Mono, Microsoft one), должна оградить вас от любых соображений по этому поводу, иначе это ошибка в реализации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top