台灣最大程式設計社群網站
線上人數
940
 
會員總數:242649
討論主題:187620
歡迎您免費加入會員
討論區列表 >> C# >> C# 轉檔程式,如何顯示處理中,已處理幾筆資料,處理完畢等字串?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
C# 轉檔程式,如何顯示處理中,已處理幾筆資料,處理完畢等字串?
價值 : 83 QP  點閱數:210 回應數:11

樓主

阿山
初學者
316 21
834 125
發送站內信

各位前輩好,小弟寫了Oracle資料轉到SQL Server的轉檔程式,目前已經算是完成,但是想加入在讀取資料時,顯示"讀取資料中","已處理第幾筆/共幾筆資料","處理完畢"等字樣,請問該怎麼寫呢?能否給點方向呢?謝謝!



搜尋相關Tags的文章: [ c# ] , [ 轉檔程式 ] , [ 字串 ] , [ 處理中 ] ,
本篇文章發表於2018-05-30 15:29
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
不錯的參考

春天
檢舉此回應
1. 多執行緒
2. 跨執行緒控制UI
本篇文章回覆於2018-05-30 15:30
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

阿山
檢舉此回應
抱歉,春天大,我是新手。

可否給範例參考呢?謝謝!
本篇文章回覆於2018-05-30 15:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
最有價值解答

春天
檢舉此回應

本篇文章回覆於2018-05-30 15:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
回應

小魚
檢舉此回應
視情況,也不一定要多執行緒,
將值指定給Label之後,
可以使用 Application.DoEvents(); 更新資料
本篇文章回覆於2018-05-30 19:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

春天
檢舉此回應
不建議用DoEvent...
本篇文章回覆於2018-05-31 09:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
回應

小魚
檢舉此回應
是喔, 為什麼啊?
本篇文章回覆於2018-05-31 12:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

春天
檢舉此回應
https://stackoverflow.com/questions/20003969/why-does-putting-doevents-in-a-loop-cause-a-stackoverflow-exception
本篇文章回覆於2018-05-31 13:05
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

阿山
檢舉此回應
感謝春天提供的範例,測試可以得到我想要的結果。

但套用在轉檔程式,會發生錯誤,如下圖:


然而我在想是否該將我的轉檔程式,關於GetDATA、InsertSQL、UpdateSQL
改寫到Dowork裡,對於我的需求來說,才算是正確的寫法?

謝謝!
本篇文章回覆於2018-06-01 10:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
回應

春天
檢舉此回應
阿你InsertSQL的參數勒
本篇文章回覆於2018-06-01 10:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

春天
檢舉此回應
C#語言入門詳解
建議你可以完整看過這套視頻,我也是看這套自學的
本篇文章回覆於2018-06-01 10:57
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

阿山
檢舉此回應
回報春天大,小弟花了幾天的時間,參照你的語法,修改了我的語法,可以完整符合我的需求,非常感激不盡!
如下:

public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
Thread t = new Thread(Dowork);
t.Start();
}

private void DoWork()
{
DataTable dt = new DataTable();

using (OracleConnection oracn = new OracleConnection())
{
//部分語法省略
Thread.Sleep(100);
UupdateLabel("資料讀取中...");

}

using (SqlConnection sqlcn = new SqlConnection())
{
//部分語法省略
int cnt = 1;
for (int i = 0; i <= dt.Rows.Count -1; i++)
{
Thread.Sleep(100);
UupdateLabel("已處理 " + cnt.ToString() + " / " + dt.Rows.Count + " 筆資料");
cnt++;
}

UupdateLabel("處理完畢");
}
Thread.Sleep(500);
Application.Exit();
}

private void UupdateLabel(string text)
{
if (this.InvokeRequired)
{
Action action = () => { labe2.Text = text; };
this.Invoke(action);
}
else
{
labe2.Text = text;
}
}
}
本篇文章回覆於2018-06-20 18:22
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.