Hi Folks,
I have an Async Task which uses a LINQ query to fetch rows of data.
public async Task<List<POMastObject>> FetchPOMastsAsync()
{
try
{
using (var db = new DBContext())
{
return await (from p in db.POMasts.AsNoTracking()
join pr in db.Profiles.AsNoTracking() on p.ProfileID equals pr.ID
join c in db.CurrencyTypes.AsNoTracking() on p.CurrencyTypeID equals c.ID
join w in db.WHMasts.AsNoTracking() on p.WarehouseID equals w.ID
join t in db.TermCodeTypes.AsNoTracking() on p.TermCodeTypeID equals t.ID
join s in db.POMastStatusTypes.AsNoTracking() on p.StatusID equals s.ID
//Ensure that these are dynamic
where (_viewfetch.VendMastID == -1 || p.VendorID == _viewfetch.VendMastID) &&
(_viewfetch.POMastStatusID == -1 || p.StatusID == _viewfetch.POMastStatusID)
orderby p.ID
//Put the query results into the bespoke object
select new POMastObject
{
ID = p.ID,
OrderNo = p.OrderNo,
RaisedDate = p.RaisedDate,
RaisedBy = pr.Name,
Currency = c.Description,
Warehouse = w.Description,
Terms = t.Description,
LastEditedBy = p.LastEditedBy,
LastEditedDate = p.LastEditedDate,
Status = s.Name
}).ToListAsync();
}
}
Which is consumed on the form as follows:
private async void GetSearchResultVendorAsync()
{
try
{
radGridViewResult.DataSource = await _poasync.FetchPOMastsAsync();
radGroupBoxResult.FooterText = "Search Results (" + radGridViewResult.RowCount.ToString() + " Records)";
}
catch (Exception ex)
{
GlobalErrorHandler.CallingRoutine = MethodBase.GetCurrentMethod().Name;
GlobalErrorHandler.CallingModule = typeof(frmSearchPO).ToString();
GlobalErrorHandler.Exception = ex.Message.ToString();
GlobalErrorHandler.HandleError();
}
}
I am trying to have a radWaitngBar wrapped around this to StartWaiting and StopWaiting but so far have been unable to get it to work
I tried the following:
private async void radButtonSearch_Click(object sender, EventArgs e)
{
try
{
InitMemberVars();
radWaitingBar1.StartWaiting();
await Task.Run(() =>
{
GetSearchResultVendorAsync();
});
radWaitingBar1.StopWaiting();
}
Which starts the animation but then falls over with a System.NullReferenceeException in Telerik,WinControls.dll
If I don't use radWaitingBar the grid is populated correctly, and you are still able to drag the radForm around the screen whilst the async data fetch is running.
Any ideas folks?
Thanks
Martin.