积极答复者
C# WinForm 异步执行

问题
答案
-
你好
或者你可以嘗試用 BACKGROUNDWORKER 做一個THREAD 來 處理查询數據的動作,
這樣点击查询时窗体便不会死机了, 你亦都可以 顯示一些字/圖來給用戶知道 查詢數據中...ETC
BACKGROUNDWORKER 的詳細資料可以參考以下URL
http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker.aspx
Please correct me if my concept is wrong
Chi- 已标记为答案 BoberSongModerator 2010年8月16日 7:07
-
namespace WindowsFormsApplication1
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
public delegate void Delegate1();
public delegate void Delegate2(DataTable dt);
public void buttonFind_Click(object sender, EventArgs e)
{
Delegate1 d1 = new Delegate1(Find);
d1.BeginInvoke(new AsyncCallback(AsyncCallback1), d1);
}
public void AsyncCallback1(IAsyncResult iAsyncResult)
{
Delegate1 d1 = (Delegate1)iAsyncResult.AsyncState;
d1.EndInvoke(iAsyncResult);
}
public void Find()
{
DataTable dt = new DataTable();
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("age", typeof(int));
AddRow(dt, "张三", 19);
AddRow(dt, "张三", 19);
AddRow(dt, "李四", 18);
this.Invoke(new Delegate2(Bind2), new object[] { dt });
}
public void AddRow(DataTable dt, string name, int age)
{
DataRow dr = dt.NewRow();
dr["name"] = name;
dr["age"] = age;
dt.Rows.Add(dr);
}
public void Bind2(DataTable dt)
{
this.dataGridView1.DataSource = dt;
}
}
}- 已标记为答案 BoberSongModerator 2010年8月16日 7:07
全部回复
-
你好
或者你可以嘗試用 BACKGROUNDWORKER 做一個THREAD 來 處理查询數據的動作,
這樣点击查询时窗体便不会死机了, 你亦都可以 顯示一些字/圖來給用戶知道 查詢數據中...ETC
BACKGROUNDWORKER 的詳細資料可以參考以下URL
http://msdn.microsoft.com/zh-cn/library/system.componentmodel.backgroundworker.aspx
Please correct me if my concept is wrong
Chi- 已标记为答案 BoberSongModerator 2010年8月16日 7:07
-
namespace WindowsFormsApplication1
{
public partial class Form3 : Form
{
public Form3()
{
InitializeComponent();
}
public delegate void Delegate1();
public delegate void Delegate2(DataTable dt);
public void buttonFind_Click(object sender, EventArgs e)
{
Delegate1 d1 = new Delegate1(Find);
d1.BeginInvoke(new AsyncCallback(AsyncCallback1), d1);
}
public void AsyncCallback1(IAsyncResult iAsyncResult)
{
Delegate1 d1 = (Delegate1)iAsyncResult.AsyncState;
d1.EndInvoke(iAsyncResult);
}
public void Find()
{
DataTable dt = new DataTable();
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("age", typeof(int));
AddRow(dt, "张三", 19);
AddRow(dt, "张三", 19);
AddRow(dt, "李四", 18);
this.Invoke(new Delegate2(Bind2), new object[] { dt });
}
public void AddRow(DataTable dt, string name, int age)
{
DataRow dr = dt.NewRow();
dr["name"] = name;
dr["age"] = age;
dt.Rows.Add(dr);
}
public void Bind2(DataTable dt)
{
this.dataGridView1.DataSource = dt;
}
}
}- 已标记为答案 BoberSongModerator 2010年8月16日 7:07