Re: два потока, одна переменная...
От: Константин Л. Франция  
Дата: 18.01.07 09:06
Оценка:
Здравствуйте, 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 у всех потоков, принадлежащих одному процессу куча одна.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.