Cuestión : Multithreading en C# .NET

Soy relativamente nuevo al desarrollo de programas en .NET, y estoy queriendo utilizar multithreading en mi uso para evitar que el GUI congele mientras que un método con un método largo del caso de la pregunta executes.
My del DB fija un campo del caso que no deba ser referido hasta que el método del caso sea completo.  ¿Cómo puedo hacer esto? el

Attached es un cierto código al demostrate qué estoy haciendo: el



I consiguió hasta el reemplazo:

myObject1.queryRecent ();

With: secondThread del

Thread = nuevo hilo de rosca (nuevo ThreadStart (myObject1.queryRecent));
secondThread.Start ();

But obviamente, label1.Text = myObject1.recentString;  ¿se ejecuta mientras que el método es todavía running.

How puede yo prevenir esta línea que ejecuta hasta que el método queryRecent haya acabado la ejecución?

Thanks por adelantado,
Matt
class= > " claro " del
> del " codeSnippet " del class= del
class= " lineNumbers " del
class= del
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
clase parcial >public notpretty Form1 " del class= " del id= " codeSnippet867955 del
           
class= del

Respuesta : Multithreading en C# .NET

Usted puede utilizar un BackgroundWorker () como esto:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
    clase parcial pública Form1: Forma
    {

        bgw privado = falta de información de System.ComponentModel.BackgroundWorker;
        Class1 privado myObject1 = nuevo Class1 ();

        público Form1 ()
        {
            InitializeComponent ();
        }

        vacío privado textBox1_KeyPress (remitente del objeto, KeyPressEventArgs e)
        {
            si (falta de información del == del bgw)
            {
                bgw = nuevo BackgroundWorker ();
                bgw.DoWork += nuevo DoWorkEventHandler (bgw_DoWork);
                bgw.RunWorkerCompleted += nuevo RunWorkerCompletedEventHandler (bgw_RunWorkerCompleted);
            }

            ¡si (&& del == 13 de e.KeyChar! bgw.IsBusy)
            {
                textBox1.Enabled = falso;
                myObject1.myString = textBox1.Text;
                bgw.RunWorkerAsync ();
            }
        }

        bgw_DoWork vacío (remitente del objeto, DoWorkEventArgs e)
        {
            myObject1.queryRecent ();
        }

        el vacío bgw_RunWorkerCompleted (remitente del objeto, RunWorkerCompletedEventArgs e)
        {
            label1.Text = myObject1.recentString;
            textBox1.Enabled = verdad;
        }

    }
Otras soluciones  
 
programming4us programming4us