線程查詢數據上傳服務器
首先創建一個 聲明委託和事件 線程
//聲明委託與時間
public delegate void UpLoadHandler(DataSet dataset, string type);
public event UpLoadHandler UpLoad;
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btn_CloseThread_Click(object sender, EventArgs e)
{
//調用test實例的MyThread方法
Thread thread = new Thread(new ThreadStart(doSomething1));
//啓動線程
thread.Start();
}
/// <summary>
/// 線程方法 //查詢數據庫,找到未上傳的數據,可在多線程中啓動
/// </summary>
private void doSomething1()
{
//DataProcessing dp = new DataProcessing();
int i = 0;
while (true)
{
///髮卡記錄上傳接口
DataSet ds = DbHelperSQL.Query("SELECT * from Base_Card where UpLoadStatus=0");
if (ds.Tables[0].Rows.Count != 0)
{
//如果找到了,開啓執行事件
//這裏的參數可以是你數據的實體類
this.UpLoad(ds ,"");
}
//線程 界面傳值
this.Invoke(new Action(() =>
{
lbl_progress.Text = i++.ToString();
}));
//線程休眠500毫
Thread.Sleep(1000);
}
}
/// <summary>
/// 加載。。。
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Frm_Main_Load(object sender, EventArgs e)
{
//綁定事件
DataProcessing pub = new DataProcessing(this);
UpLoad += pub.upload;
}
事件處理數據上傳類
/// <summary>
/// 數據處理
/// </summary>
class DataProcessing
{
public DataProcessing(Frm_Main test1)
{
}
/// <summary>
/// 髮卡記錄上傳接口(vn_base_card)
/// </summary>
public void upload(DataSet ds, string type)
{
//這裏上傳數據
System.Windows.Forms.MessageBox.Show("上傳數據啦");
}
}
/// <summary>
/// 關閉窗體終止線程
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Frm_Main_FormClosing(object sender, FormClosingEventArgs e)
{
Environment.Exit(0);
}