Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как получить доступ к основному потоку


Автор: ДобренькийПапаша 18.8.2011, 15:21
Мне нужно выполнить команду
Код

Application.Current.Shutdown(100);

из статического метода, который работает в фоновом потоке. В рантайме здесь отваливается.
На код
Код

Dispatcher.Invoke(new Action(() =>
                Application.Current.Shutdown(100)));

компилятор ругается: Ошибка 1. Для нестатического поля, метода или свойства "System.Windows.Threading.Dispatcher.Invoke(System.Delegate, params object[])" требуется ссылка на объект

Автор: jonie 18.8.2011, 15:44
Application.Current.Dispatcher вроде бы есть

Автор: ДобренькийПапаша 19.8.2011, 10:30
Хм, а почему Application.Current может null возвращать? Исключение стало вылетать.

Автор: ДобренькийПапаша 22.8.2011, 13:22
Вопрос остаётся открытым. Проблема следующая.
Есть основной поток. В нём я создаю бэкграунд поток (свойство IsBackground = true). Этот бэкграунд поток вызывает статический метод, который должен погасить приложение при случае.

Когда я потоку поставил свойство IsBackground = true, то обращение к Application в статическом методе перестало давать null, однако, теперь меня просто не пускают к этому объекту.
Код

Dispatcher.CurrentDispatcher.Invoke(new Action(() => Application.Current.Shutdown(errorCode))); //не катит

Вызывающий поток не может получить доступ к данному объекту, так как владельцем этого объекта является другой поток.
Оно и понятно, но как обойти?

Автор: Noubpoeno 10.12.2022, 04:33
Модератор: Сообщение скрыто.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)