c# .net wcf sta

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