winform 关于一个简单的多线程,求指点..类似进度条
首先说下,我从来没用过多线程,也没学过,对于多线程是个小白...
我想实现的是Form1 窗口点击一个按钮, 然后他的按钮事件里边有一个调用Form2的窗口,
把Form2这个窗口调用出来以后继续执行 From1按钮里边 调用Form2以后的代码。。。
就类似个进度条,我想用多线程就是想见识见识- -
不用多线程应该也可以实现把- - 我是个新手刚接触c#没几天
private void btnquery_Click(object sender, EventArgs e)
{
f = new Form2();//调用圆形进度条
f.Show(); //问下高手为什么直接点击按钮这个窗口不会显示啊?不显示就直接去执行数据库查询代码了
#region 判断空
if (radioButton1.Checked==false&&radioButton2.Checked==false)
{
//进了这两个 return 的话那个窗口就出来了..
MessageBox.Show("请选择限制条件.");
return;
}
if (textBox1.Text.Equals(""))
{
textBox1.Focus();
MessageBox.Show("请输入数量。");
return;
}
textBox3.Text = "";
#endregion
//查询数据库的数据放到datagridview
queryClick();
}
class Program
{
//我是一个委托,可以指向任何传入两个整数并返回一个整数的方法,正所谓函数方法指针
public delegate int BinaryOp(int x, int y);
static int Add(int x, int y)
{
Console.WriteLine(" add() invoked on thread {0}.", Thread.CurrentThread.ManagedThreadId);
Thread.Sleep(5000);
return x + y;
}
static void Main(string[] args)
{
//---start
//Console.Write("****synch delegate review*****");
//Console.WriteLine("main() invoked on thread {0}", Thread.CurrentThread.ManagedThreadId);
//BinaryOp b = new BinaryOp(Add);
//int answer = b(10, 10);
//Console.WriteLine("doing more work in main()!");
//Console.WriteLine("10+10 is {0}", answer);
//Console.ReadLine();
//---end
Console.Write("****Async delegate invocation*****");
//主线程输出
Console.WriteLine("main() invoked on thread {0}", Thread.CurrentThread.ManagedThreadId);
//次线程输出
BinaryOp a = new BinaryOp(Add);
IAsyncResult iar = a.BeginInvoke(10, 10, null, null);
while (!iar.IsCompleted)
{
Console.Write("doing more works in main!");
Thread.Sleep(1000);
}
int answer = a.EndInvoke(iar);
Console.WriteLine("10+10 is {0}", answer);
Console.ReadLine();
}
}