スレッドを使用して別のクラスからDataTableを返そうとしていますが、スレッドがDataTableを返さない。スレッドを使用していない間は、正常に動作します。スレッドを使用してDataTableを返すことはできません
public class reatail
{
DataTable order_dt = new DataTable();
public DataTable loadAllOrder()
{
OleDbConnection co = new OleDbConnection();
co.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + sd + "bowoni.accdb";
string loadAll = "select * from allorder";
co.Open();
OleDbCommand cc = new OleDbCommand(loadAll, co);
OleDbDataAdapter ad = new OleDbDataAdapter(cc);
ad.Fill(order_dt);
return order_dt;
}
}
public partial class RecieveOrder : Form
{
DataTable dy = new DataTable();
reatail r = new reatail();
Thread t;
public void storeToStock()
{
//DataTable dy = new DataTable();
Thread th=new Thread(()=>dy=r.loadAllOrder());
th.Start();
foreach(DataRow row in dy.Rows)
{
MessageBox.Show(row[0].ToString());
}
}
}
スレッドは性質上非同期です。あなたは彼らが返すデータにアクセスする前に、実行のフィニッシュラインを知る必要があります。 – RBT