Pergunta : Multithreading em C# .NET

Eu sou relativamente novo à programação de software em .NET, e eu estou querendo usar-se multithreading em minha aplicação para impedir que o GUI se congele quando um método com um método longo do exemplo da pergunta executes.
My do DB ajustar um campo do exemplo que não deva ser provido até que o método do exemplo esteja completo.  Como posso eu fazer este? o

Attached é algum código ao demostrate o que eu estou fazendo: o



I começ até a substituição:

myObject1.queryRecent ();

With: secondThread do

Thread = linha nova (ThreadStart novo (myObject1.queryRecent));
secondThread.Start ();

But obviamente, label1.Text = myObject1.recentString;  está executado quando o método for ainda running.

How pode mim impedir esta linha que executa até que o método queryRecent termine a execução?

Thanks adiantado,
Matt
class= > " desobstruído " do
> do " codeSnippet " do class= do
class= " lineNumbers " do
class= do
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:
classe parcial >public notpretty Form1 " do class= " do id= " codeSnippet867955 do
           
class= do

Resposta : Multithreading em C# .NET

Você pode usar um BackgroundWorker () como este:
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:
    classe parcial pública Form1: Formulário
    {

        bgw confidencial = zero de System.ComponentModel.BackgroundWorker;
        Class1 confidencial myObject1 = Class1 novo ();

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

        vácuo confidencial textBox1_KeyPress (remetente do objeto, KeyPressEventArgs e)
        {
            se (zero do == do bgw)
            {
                bgw = BackgroundWorker novo ();
                bgw.DoWork += DoWorkEventHandler novo (bgw_DoWork);
                bgw.RunWorkerCompleted += RunWorkerCompletedEventHandler novo (bgw_RunWorkerCompleted);
            }

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

        bgw_DoWork vago (remetente do objeto, DoWorkEventArgs e)
        {
            myObject1.queryRecent ();
        }

        o vácuo bgw_RunWorkerCompleted (remetente do objeto, RunWorkerCompletedEventArgs e)
        {
            label1.Text = myObject1.recentString;
            textBox1.Enabled = retificam;
        }

    }
Outras soluções  
 
programming4us programming4us