Estoy usando http://www.codeproject.com/KB/IP/Facebook_API.aspx
Estoy tratando de llamar al XAML que se crea usando WPF . Pero me da un error:
El subproceso de llamada debe ser STA, porque muchos componentes de la interfaz de usuario requieren esto.
No se que hacer. Estoy tratando de hacer esto:
FacebookApplication.FacebookFriendsList ffl = new FacebookFriendsList();
Pero me está dando ese error.
Agregué un trabajador de fondo:
static BackgroundWorker bw = new BackgroundWorker();
static void Main(string[] args)
{
bw.DoWork += bw_DoWork;
bw.RunWorkerAsync("Message to worker");
Console.ReadLine();
}
static void bw_DoWork(object sender, DoWorkEventArgs e)
{
// This is called on the worker thread
FacebookApplication.FacebookFriendsList ffl = new FacebookFriendsList();
Console.WriteLine(e.Argument); // Writes "Message to worker"
// Perform time-consuming task...
}
DispatcherHelper.CheckBeginInvokeOnUI(Action action)
Si realiza la llamada desde el hilo principal, debe agregar el atributo STAThread al método Main, como se indicó en la respuesta anterior.
Si utiliza un subproceso independiente, debe estar en un STA (apartamento de subproceso único), que no es el caso de subprocesos de trabajo en segundo plano. Tienes que crear el hilo tú mismo, así:
con ThreadProc siendo un delegado de tipo ThreadStart.
fuente
también puedes probar esto
fuente
Sospecho que está recibiendo una devolución de llamada a un componente de la interfaz de usuario desde un subproceso en segundo plano. Le recomiendo que haga esa llamada utilizando un BackgroundWorker, ya que este es un subproceso de interfaz de usuario.
Para el BackgroundWorker, el programa principal debe estar marcado como [STAThread].
fuente
¡Simplemente marque su programa con el
[STAThread]
atributo y el error desaparecerá! Es magia :)fuente
Para mí, este error ocurrió debido a que se pasó un parámetro nulo. Verificar los valores de las variables solucionó mi problema sin tener que cambiar el código. Usé BackgroundWorker.
fuente
Si llama a una nueva declaración de UI de ventana en un hilo existente, arroja un error. En lugar de eso, cree un nuevo hilo dentro del hilo principal y escriba la declaración de la interfaz de usuario de la ventana en el nuevo hilo hijo.
fuente