|
|
|
รบกวนขอคำแนะนำด้วยครับ backgroundWorker ทำ multi thread แสดงข้อมูลซ้ำเป็นช่วงๆครับ (ทำไม่ได้จริงๆ) |
|
|
|
|
|
|
|
รบกวนขอคำแนะนำด้วยครับ backgroundWorker ทำ multi thread แสดงข้อมูลซ้ำเป็นช่วงๆครับ (ทำไม่ได้จริง)
ปัญหาของผมนะครับ
1.โปรแกรมอ่านข้อมูลจาก dbf file แล้วนำมาแสดงใน datagridview ครับแต่ข้อมูล แสดง record ซ้ำเป็นช่วงๆ ที่แสดงข้อมุลใน datagridview (ต้องแก้ไขยังไงจาก source code ด้านล่างครับ)
2.เวลาแสดงข้อมูลที่เป็นชนิด date มาแสดงที่ datagrid format ของการแสดงผลมันเปลี่ยนจาก yyyy-mm-dd -> 22/10/2557 0:00:00 (ต้องแก้ไขยังไงจาก source code ด้านล่างครับ)
ข้อมูลแสดงซ้ำดังภาพครับ
http://upload.siamza...114/1104952.jpg
ปล. dbf file ที่เขียนโปรแกรมอ่านไม่มีข้อมูลที่ซ้ำกัน แต่เวลาวนรอบแสดงผลโดยใช้ backgroundWorker มันแสดงซ้ำเป็นช่วงๆของการแสดงข้อมูล datagridview ครับ
ขอคำชี้แนะหน่อยครับ พึ่งทำครั้งแรกไม่เป็นจริงๆ
Code (C#)
private void btnReadDBF_Click(object sender, EventArgs e)
{
...
statusStrip1.Visible = true;
toolStripStatusLabel1.Visible = true;
toolStripProgressBar1.Maximum = GetTotalRecords();
if (!backgroundWorker1.IsBusy)
{
objDD TObj = new objDD ();
dgView.Rows.Clear();
backgroundWorker1.RunWorkerAsync(TObj);
btnReadDBF.Enabled = false;
btCancel.Enabled = true;
}
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
objDD Obj = (objDD)e.Argument;
OleDbDataReader reader;
int i = 0;
try{
string strQuery = "select * from " + DBF_FileName;
cmdDBF = new OleDbCommand(strQuery, connDBF);
connDBF.Open();
reader = cmdDBF.ExecuteReader();
if (reader.HasRows){
while (reader.Read()) {
index = i;
...
Obj.Title = reader["title"].ToString();
Obj.Fname = reader["fname"].ToString();
Obj.Lname = reader["lname"].ToString();
Obj.Birthdate = reader["birthdate"].ToString();
Obj.Address = reader["address"].ToString();
Obj.Moo = reader["moo"].ToString();
...
Thread.Sleep(100);
backgroundWorker1.ReportProgress(i, Obj);
if (backgroundWorker1.CancellationPending)
{
e.Cancel = true;
backgroundWorker1.ReportProgress(0);
return;
}
i++;
}
connDBF.Close();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void backgroundWorker1_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
if (!backgroundWorker1.CancellationPending)
{
objDDObj = (objDD)e.UserState;
dgView.Rows.Add(
...
Obj.Title.ToString(),
Obj.Fname.ToString(),
Obj.Lname.ToString(),
Obj.Birthdate.ToString(),
Obj.Address.ToString(),
Obj.Moo.ToString(),
...
);
toolStripProgressBar1.Value = e.ProgressPercentage;
toolStripStatusLabel1.Text = "Processing row.. " + e.ProgressPercentage.ToString() + " of " + TotalRecords;
}
}
Tag : .NET, Win (Windows App), C#
|
|
|
|
|
|
Date :
2014-01-10 15:13:59 |
By :
handfoot4work |
View :
924 |
Reply :
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
รูปภาพ ครับ http://upload.siamza.info/file_upload/modify/100114/1104952.jpg
|
|
|
|
|
Date :
2014-01-10 15:14:43 |
By :
handfoot4work |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Upload ไฟล์ให้ถูกครับ
|
|
|
|
|
Date :
2014-01-10 15:44:10 |
By :
mr.win |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|