Документация действительно указывает, что загрузка одной и той же сборки несколько раз может привести к копированию / новым экземплярам, поэтому я определенно не буду вызывать ее дважды для одной и той же сборки или для разных версий сборки.
Помимо этого, https://msdn.microsoft.com/en-us/library/system.reflection.assembly(v=vs.110).aspx указывает, что тип (сборка) является потокобезопасным.Это означает, что весь тип, включая Assembly.Load (byte []), действительно безопасен для потоков.
Учитывая более раннюю информацию в этой теме, я чувствую необходимость определить потокобезопасность (согласно wikipedia ):
- Потокобезопасен: Реализация гарантированно не содержит условий гонки при одновременном доступе к нескольким потокам.
Это означает, что вы можете безопасно использовать его из нескольких потоков, но вы должны знать, что операция не является идемпотентная ;дважды вызывая его, вы получите два результата, а не один.
Концептуально, если вышеописанное является проблемой, код, который использует Assembly.Load (byte []), фактически непотокобезопасен.