私のアプリケーションでは、保留中のアプリケーションについてユーザーに通知する必要がありました。
そのため、データベースにクエリを実行して保留中のアプリケーションを取得し続けるmdiParent
を設定し、見つかった場合はツールチップに表示しますBackgroundWorker
MdiParent
private void button1_Click(object sender, EventArgs e)
{
backgroundWorker1.RunWorkerAsync(2000);
}
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
fillnotification();
}
public void fillnotification()
{
int pending = 0;
if( Program.USERPK != 0)
{
DataTable dt = nftrans.getnotification();
pending = dt.Rows.Count;
String message = "You Have " + pending + " Applications Pending For Approval";
// toolTip1.SetToolTip(lblStatus , message);
toolTip1.Show(message , this, lblStatus.Location);
}
}
しかし、ソリューションを実行すると例外が発生します:
クロススレッド操作が無効です: コントロール 'MainForm' は、それが作成されたスレッド以外のスレッドからアクセスされました。
2 つの異なるスレッドが原因であることは理解していますが、これを整理することはできません。誰でも解決策を提案できますか? 関連する質問で読んだアイデアを試しましたが、正しい解決策が見つかりません