【发布时间】:2012-03-28 20:33:56
【问题描述】:
我有一个功能在 Web 应用程序中需要很长时间才能执行。
我已经用探查器和我的日志对此进行了测试。
我在同一个页面加载中运行其他功能。
显示这些函数的其余值并将此函数保存在线程中并在完成时将其显示在标签中的最佳方法是什么?
此函数用于获取应用程序中需要时间的事件。
private void getEventErrors()
{
EventLog eventLog = new EventLog("Application", ".");
getEvents(eventLog.Entries);
}
private void getEvents(EventLogEntryCollection eventLogEntryCollection)
{
int errorEvents = 0;
foreach (EventLogEntry logEntry in eventLogEntryCollection)
{
if (logEntry.Source.Equals("XYZ"))
{
DateTime variable = Convert.ToDateTime(logEntry.TimeWritten);
long eventTimeTicks = (variable.Ticks);
long eventTimeUTC = (eventTimeTicks - 621355968000000000) / 10000000;
long presentDayTicks = DateTime.Now.Ticks;
long daysBackSeconds = ((presentDayTicks - 864000000000) - 621355968000000000) / 10000000;
if (eventTimeUTC > daysBackSeconds)
{
if (logEntry.EntryType.ToString() == "Error")
{
errorEvents = errorEvents + 1;
}
}
}
}
btn_Link_Event_Errors_Val.Text = errorEvents.ToString(GUIUtility.TWO_DECIMAL_PT_FORMAT);
if (errorEvents == 0)
{
lbl_EventErrorColor.Attributes.Clear();
lbl_EventErrorColor.Attributes.Add("class", "green");
}
else
{
lbl_EventErrorColor.Attributes.Clear();
lbl_EventErrorColor.Attributes.Add("class", "red");
}
}
我在页面加载事件中有 3 个函数,其中两个用于从数据库中获取值,另一个如上所示。
这两个函数都应该是服务调用吗?
我想要的是,页面应该快速加载,如果有一个功能需要很长时间,它应该在后台运行并在完成后显示,如果用户想要导航到新页面,它应该在进程中杀死它并继续前进。
【问题讨论】:
-
如何将其移至它所属的服务并进行 AJAX 调用?
-
将其移至服务..?对不起,但你能说得更清楚些,因为我是新手。我还没有开始实现 AJAX。一个例子会很有帮助。谢谢
标签: c# asp.net multithreading performance