Это функция, когда я щелкнул btnSearch и загрузил данные в макет вида сетки. Пока я получаю ошибку ниже, и я нажал 2-й, 3-й и 4-й. После 5-го щелчка, он возвращается в нормальное состояние.
{"Операция с несколькими потоками недопустима: доступ к элементу управления '' осуществляется из потока, отличного от потока, в котором он был создан."}
Насколько я понимаю, Мне нужно будет реализовать метод invoke, но я не знаю, как изменить мой код.
Ниже приведен мой код:
private void LoadgvwTaxResult()
{
Task.Run(async () =>
{
try
{
await Task.Factory.StartNew(() =>
{
_waitingBar.StartWaiting();
}, _cts.Token, TaskCreationOptions.None, _taskScheduler);
List<TaxInvoiceSearchModel> list = InitTaxInvoiceData();
await Task.Factory.StartNew(() =>
{
gvwSeachResult.MasterTemplate.BeginUpdate();
InitGridViewHeader();
gvwSeachResult.DataSource = null;
gvwSeachResult.DataSource = list;
gvwSeachResult.MasterTemplate.EndUpdate();
ControlInitializer.RefreshTotalRecords(gvwSeachResult);
if (gvwSeachResult.Rows.Count > 0)
{
grpSummary.Visible = true;
btnBillingHistory.Visible = true;
}
else
{
RadMessageBox.Show("Record not found.", "Validation", MessageBoxButtons.OK, RadMessageIcon.Info);
grpSummary.Visible = false;
}
}, _cts.Token, TaskCreationOptions.None, _taskScheduler);
}
catch (Exception ex)
{
throw ex;
}
finally
{
await Task.Factory.StartNew(() =>
{
_waitingBar.StopWaiting();
_waitingBar.ResetWaiting();
}, _cts.Token, TaskCreationOptions.None, _taskScheduler);
}
}, _cts.Token);
}