To reproduce: please run the application provided in the ticket. You will notice that RadGridView stops updating.
Workaround: use MethodInvoker for the update operation:
private void readTicks()
{
DateTime now = DateTime.Now;
Tick previouse = null;
for (int i = 0; i < lines.Length; i++)
{
if (canceled)
return;
var t = new Tick();
try
{
try
{
JsonConvert.PopulateObject(lines[i], t);
}
catch
{
continue;
}
var c = contracts[t.ContractId];
c.Row[(int)t.TickType] = t;
c.CurrentTickSetNr++;
if (this.radGridView1.InvokeRequired)
{
this.radGridView1.Invoke(new MethodInvoker(delegate { c.Fire(t); }));
}
else
{
c.Fire(t);
}
previouse = t;
OnTick?.Invoke(c.ConId, i);
}
catch (Exception e)
{
Debug.WriteLine(e.Message);
}
}
OnDone?.Invoke(this, new EventArgs());
}