ошибка The calling thread must be STA
От: Аноним  
Дата: 02.03.11 09:28
Оценка:
Добрый день.
Создаю пустую форму в потоке, в конструкторе формы вылезает ошибка: The calling thread must be STA, because many UI components require this.

 ThreadPool.QueueUserWorkItem((WaitCallback)delegate
 {
     Форма111 fff= new Форма111();
     fff.Show();
 }));


Что не так?
Re: ошибка The calling thread must be STA
От: Sinix  
Дата: 02.03.11 09:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Что не так?

Если коротко — зачем вообще запускать форму в другом потоке, тем более, в потоке из пула?
Чуть длиннее — используйте отдельный поток и выставляйте apartment state в sta.
Re[2]: ошибка The calling thread must be STA
От: Аноним  
Дата: 02.03.11 11:51
Оценка:
Здравствуйте, Sinix, Вы писали:

А как бы мне такое сделать:

 Thread t = new Thread((ThreadStart)delegate
    {
        Форма1 фрм = new Форма1 () { Owner = = Application.Current.MainWindow };

....
    }


Соответственно вылетает с ошибкой The calling thread cannot access this object because a different thread owns it.
Re[3]: ошибка The calling thread must be STA
От: Sinix  
Дата: 02.03.11 11:56
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Соответственно вылетает с ошибкой The calling thread cannot access this object because a different thread owns it.

Никак.
Или изучать
Автор(ы): Крис Селлз (Chris Sells)
Дата: 05.06.2003
В статье рассматривается использование многопоточности в приложениях Windows Forms на примере отображения хода длительной операции с использованием асинхронного делегата для запуска рабочего потока и метода Invoke для главной формы.
как всё устроено, или вообще не возиться с потоками. В любом случае, отвыкайте от русских идентификаторов.

Зачем вам вообще формы в разных потоках?
Re[4]: ошибка The calling thread must be STA
От: aloch Россия  
Дата: 02.03.11 13:42
Оценка:
Здравствуйте, Sinix, Вы писали:

S> В любом случае, отвыкайте от русских идентификаторов.


А зачем тогда C# поддерживает Unicode?


Re[5]: ошибка The calling thread must be STA
От: Sinix  
Дата: 02.03.11 13:55
Оценка: :)
Здравствуйте, aloch, Вы писали:

S>> В любом случае, отвыкайте от русских идентификаторов.

A>А зачем тогда C# поддерживает Unicode?
Строковые литералы как объявлять будете?

Уже обсуждалось
Автор:
Дата: 23.11.10
:
कंसोल.כתובהקו("こんにちは العالم!");

Приятного дебага
Re[6]: ошибка The calling thread must be STA
От: aloch Россия  
Дата: 02.03.11 14:18
Оценка:
Здравствуйте, Sinix, Вы писали:

S>कंसोल.כתובהקו("こんにちは العالم!");


S>Приятного дебага


Зачем МНЕ это отлаживать. Ну а у написавших это проблем с пониманием не будет. Если делается проект, подразумевающий использование в разных странах разноязычными пользователями — то, конечно, все по английски.

Но если делаетсядля себя или для конкретной страны, то в чем проблема?


Re[7]: ошибка The calling thread must be STA
От: Sinix  
Дата: 02.03.11 14:25
Оценка: 1 (1)
Здравствуйте, aloch, Вы писали:

A>Но если делаетсядля себя или для конкретной страны, то в чем проблема?

Для одноразовых поделок — никаких проблем. Для долгоживущего кода всё написано по ссылке выше.
Re[8]: ошибка The calling thread must be STA
От: aloch Россия  
Дата: 02.03.11 14:31
Оценка:
Здравствуйте, Sinix, Вы писали:

В качестве примера "одноразовой поделки" — конфигугации 1С (Бухгалтерия, Торговля и т.п.), пойдут?


Re[9]: ошибка The calling thread must be STA
От: Sinix  
Дата: 02.03.11 14:43
Оценка:
Здравствуйте, aloch, Вы писали:

A>В качестве примера "одноразовой поделки" — конфигугации 1С (Бухгалтерия, Торговля и т.п.), пойдут?

Ну сколько можно холиварить впустую? У 1С — русскоязычное API. У дотнета официальный гадлайн — только alphanumeric.
Re[10]: ошибка The calling thread must be STA
От: aloch Россия  
Дата: 02.03.11 17:03
Оценка: :)
Здравствуйте, Sinix, Вы писали:

У 1C два API — русский и английский, последний мало кто использует.

В гайдлане — не слова про "только английский язык". Сказано alphanumeric (в русском разделе МСДН — "буквенно-цифровые знаки")
— для русского языка это — абв123.


Re[11]: ошибка The calling thread must be STA
От: Sinix  
Дата: 02.03.11 17:17
Оценка:
Здравствуйте, aloch, Вы писали:

A>В гайдлане — не слова про "только английский язык". Сказано alphanumeric (в русском разделе МСДН — "буквенно-цифровые знаки")

A>- для русского языка это — абв123.
http://en.wikipedia.org/wiki/Alphanumeric
Re[12]: ошибка The calling thread must be STA
От: aloch Россия  
Дата: 02.03.11 17:53
Оценка:
Здравствуйте, Sinix, Вы писали:

S>http://en.wikipedia.org/wiki/Alphanumeric


Теперь то-же самое для термена "буквенно-цифровые знаки" из РУССКОГО раздела MSDN?


Re[12]: ошибка The calling thread must be STA
От: Аноним  
Дата: 02.03.11 17:56
Оценка: :)
Здравствуйте, Sinix, Вы писали:

И еще, в контексе того, что гайдлайне нет ни слова про английский языкЖ

Schet23.SpisatSummuZakaza(SummaVRublyah1);

Это хорошо — обрати внимание, все по гайдлайну!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.