backgroundworkerを使用してmdbからデータを読み取ろうとすると、エラーが発生します
プログラム'[3768]BackgroundWorkerExample.vshost.exe:Managed'がコード0(0x0)で終了しました。
他の情報や例外がなければ、私はそれを捕まえることができません。これが私のコードです。BGWがなくても問題なく動作します。私は何かが恋しいですか?
namespace BackgroundWorkerExample
{
public class TestClass
{
BackgroundWorker _Worker;
public TestClass()
{
InitializeWorker();
}
public void InitializeWorker()
{
_Worker = new BackgroundWorker();
_Worker.DoWork += new DoWorkEventHandler(WorkerDoWork);
_Worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(WorkerRunWorkerCompleted);
}
private void WorkerRunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
Console.WriteLine("Work completed!");
}
private void WorkerDoWork(object sender, DoWorkEventArgs e)
{
DataTable data = GetDataTable();
PrintResults(data);
}
public void Run()
{
_Worker.RunWorkerAsync();
}
public DataTable GetDataTable()
{
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\students.mdb;";
try
{
using (OleDbConnection con = new OleDbConnection(connectionString))
{
try
{
con.Open(); // crashes here!
DataTable res = new DataTable();
string query = "SELECT * FROM students";
OleDbDataAdapter adapter = new OleDbDataAdapter(query, con);
adapter.Fill(res);
return res;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
return null;
}
}
}
catch (Exception e)
{
// never reaches this part
return null;
}
}
public void PrintResults(DataTable data)
{
foreach (DataRow row in data.Rows)
{
for (int i = 0; i < 5; i++)
{
Console.Write(row[i] + " ");
}
Console.WriteLine();
}
}
}
}