Не прерывайте поток, которого следует избегать.
Если вы хотите закрыть Window
, вы вызываете Close
для него.
О, он создаетсядругая нить?Хорошо, именно поэтому Window
имеет Dispatcher
, вы используете BeginInvoke
, и он будет выполнять обратный вызов в этом потоке.
На самом деле, есть шанс, что вам не нужно создаватьWindow
в другой теме ※.Вы можете создать его в основном потоке и заставить фоновый поток взаимодействовать с ним через BeginInvoke
.
※: если основной поток занят и вы хотите Window
в другом потоке, то основной поток выполняетне блокируйте его (или наоборот), вы, вероятно, должны использовать BackgroundWorker
(как Кай Джард предлагает ) вместо того, чтобы поток пользовательского интерфейса был занят.