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");
}
}
私はpageloadイベントに3つの関数を持ち、2つはDBから値を取得し、もう1つは上に示しています。
これらの機能を両方ともサービスコールにする必要がありますか?
私が望んでいたのは、ページが高速に読み込まれ、多くの時間がかかる機能がある場合は、バックグラウンドで実行し、完了したときに表示し、ユーザーが新しいページに移動したい場合それを殺して移動しなければならない。
それを所属するサービスに移動してAJAXコールを行うのはどうですか? –
サービスに移動する..?申し訳ありませんが、私はこれに新しいので、あなたはより明確になることができます。私はまだAJAXの実装を開始していません。例が非常に役に立つでしょう。 Thnaks – user175084