Страницы

Поиск по вопросам

четверг, 9 января 2020 г.

Текущий поток должен быть задан как поток однопоточного контейнера

#c_sharp


Как-то через раз появляется ошибка:


  Текущий поток должен быть задан как поток однопоточного контейнера
  (STA), чтобы вызовы OLE стали возможны. Проверьте, что ваша функция
  Main помечена атрибутом STAThreadAttribute.


Что это значит и как исправить? И почему она выскакивает не всегда?

using System;
using System.IO;
using System.Net;
using System.Text;

public class Program {
 public static void Main() {
  try {
   TextReader file_track_title = new StreamReader(@"C:\Users\Administrator\Desktop\AMData\track_title.txt");

   System.Windows.Forms.Clipboard.SetText(file_track_title.ReadLine());

   file_track_title.Close();
  } catch (Exception ex) {
   System.Windows.Forms.MessageBox.Show(ex.Message);
  }
 }
}

    


Ответы

Ответ 1



Thread thread = new Thread(() => Clipboard.SetText(file_track_title.ReadLine())); thread.SetApartmentState(ApartmentState.STA); thread.Start(); thread.Join();

Ответ 2



[STAThread] static void Main() { ... } Судя по докам, это надо для работы с COM

Комментариев нет:

Отправить комментарий