启动时调用此方法时,会出现OutOfMemoryException。StartSignalR方法应该运行一个Task,该Task每秒调用Update((方法。
public void StartSignalR()
{
Task t = Task.Run(() =>
{
try
{
bool push = true;
while (push)
{
Update();
}
}
catch (System.Exception ex)
{
LogManager.LogError(ex);
}
});
}
我使用任务延迟更新((
private async static void Update()
{
await Task.Delay(1000);
Updater.MPrice();
}
要使Task.Delay
真正等待,必须将lambda声明为async
,并将await
声明为Update
方法。
public void StartSignalR()
{
//added async
Task t = Task.Run(async () =>
{
try
{
bool push = true;
while (push)
{
//await the Update method
await Update();
}
}
catch (System.Exception ex)
{
LogManager.LogError(ex);
}
});
}
通过此更改,您的Update
方法必须返回Task
//changed signature
private async static Task Update()
这很可能会减少内存占用,因为目前您正在疯狂地启动Update
方法。