Здравствуйте, sharcUs, Вы писали:
U>Есть класс:
U>U>class Foo : IDisposable
U>{
U> void IDisposable.Dispose() { }
U> public void Dispose() { }
U> private MyObj obj = null;
U> ...
U> void Run ()
U> {
U> ...
U> obj = new MyObj();
U> ...
U> }
U> ...
U>}
U>static class Program
U>{
U> static void Main(string[] args)
U> {
U> using (Foo foo = new Foo())
U> {
U> foo.Run();
U> ...
U> }
U> ...
U> }
U>}
U>
U>Метод Run с помошью Invoke исполняется другом потоке, и там же создается экземпляр obj.
U>Далее работа Foo предполагается в основном потоке.
U>В с++ при разрушении obj произошло бы исключения изза того что obj был создан на другой куче.
U>Насколько правомерен и корректен(мало ли подобный код в .NET, и какими последствиями чреват такой код, если он некорректен?
корректен. Но тут вообще трудно что-то сказать без полного кода.
Кстати, в с++ в этом случае никаких исключений не будет. В win у всех потоков, принадлежащих одному процессу куча одна.