Comenzando un STAThread en C#
.net wcf (1)
Thread thread = new Thread(() => MyClass.DoX("abc", "def"));
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
Si necesita el valor, puede "capturarlo" de nuevo en una variable, pero tenga en cuenta que la variable no tendrá ese valor hasta el final del otro hilo:
int retVal = 0;
Thread thread = new Thread(() => {
retVal = MyClass.DoX("abc", "def");
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
o tal vez más simple:
Thread thread = new Thread(() => {
int retVal = MyClass.DoX("abc", "def");
// do something with retVal
});
thread.SetApartmentState(ApartmentState.STA);
thread.Start();
Todavía soy un poco nuevo para C #, y especialmente para subprocesos en C #. Estoy intentando iniciar una función que requiere un apartamento con un solo hilo ( STAThread )
Pero no puedo compilar el siguiente código:
La función se ve de la siguiente manera en una clase separada llamada MyClass
:
internal static string DoX(string n, string p)
{
// does some work here that requires STAThread
}
He probado el atributo [STAThread] en la parte superior de la función, pero eso no funciona.
Así que estoy tratando de crear un nuevo hilo de la siguiente manera:
Thread t = new Thread(new ThreadStart(MyClass.DoX));
pero esto no se compilará (el método mejor sobrecargado tiene un error de argumentos no válido). Sin embargo, el ejemplo en línea es muy similar (ejemplo aquí) ¿Qué hago mal y cómo puedo simplemente ejecutar una función en un nuevo hilo STA?
Gracias