Вызывающий поток должен быть STA, потому что многие компоненты Ui требуют этого [дубликата]

import datetime
temp = datetime.datetime.fromtimestamp(1386181800).strftime('%Y-%m-%d %H:%M:%S')
print temp
126
задан Peter Mortensen 31 July 2015 в 19:51
поделиться

6 ответов

Application.Current.Dispatcher.Invoke ((Action) delegate {// помещаем здесь код});

2
ответ дан Chirag Solanki 25 August 2018 в 14:57
поделиться

Вы также можете попробовать

// create a thread  
Thread newWindowThread = new Thread(new ThreadStart(() =>  
{  
    // create and show the window
    FaxImageLoad obj = new FaxImageLoad(destination);  
    obj.Show();  

    // start the Dispatcher processing  
    System.Windows.Threading.Dispatcher.Run();  
}));  

// set the apartment state  
newWindowThread.SetApartmentState(ApartmentState.STA);  

// make the thread a background thread  
newWindowThread.IsBackground = true;  

// start the thread  
newWindowThread.Start();  
6
ответ дан Gustavo Mori 25 August 2018 в 14:57
поделиться

Попробуйте вызвать код из диспетчера :

Application.Current.Dispatcher.Invoke((Action)delegate{
      // your code
});
144
ответ дан Hakam Fostok 25 August 2018 в 14:57
поделиться

Если вы вызываете оператор UI нового окна в существующий поток, он выдает ошибку. Вместо этого создайте новый поток внутри основного потока и напишите оператор UI окна в новом дочернем потоке.

15
ответ дан Peter Mortensen 25 August 2018 в 14:57
поделиться

Для меня эта ошибка произошла из-за передачи пустого параметра. Проверка значений переменных исправила мою проблему без изменения кода. Я использовал BackgroundWorker.

0
ответ дан Ryan Loggerythm 25 August 2018 в 14:57
поделиться

Если вы делаете вызов из основного потока, вы должны добавить атрибут STAThread к методу Main, как указано в предыдущем ответе.

Если вы используете отдельный поток, он должен быть в STA (однопоточная квартира), что не относится к потокам рабочего стола. Вы должны сами создать поток:

Thread t = new Thread(ThreadProc);
t.SetApartmentState(ApartmentState.STA);

t.Start();

с ThreadProc, являющимся делегатом типа ThreadStart.

124
ответ дан sakibmoon 25 August 2018 в 14:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: