1
私のウェブサイトでは、バックグラウンドでプロセスを実行するスレッドを使用しています。私はボタンクリックでスレッドを開始します。ASP.NETでのスレッドのタイムアウトの問題
私が直面する問題は、タイムアウトして停止するように見えるということです。基本的にデータベースの更新は停止します。
何が間違っている可能性がありますか?ここで
は私のコードです:
public static class BackgroundHelper
{
private static readonly object _syncRoot = new object();
private static readonly ManualResetEvent _event = new ManualResetEvent(false);
private static Thread _thread;
public static bool Running
{
get;
private set;
}
public static void Start()
{
lock (_syncRoot)
{
if (Running)
return;
Running = true;
// Reset the event so we can use it to stop the thread.
_event.Reset();
// Star the background thread.
_thread = new Thread(new ThreadStart(BackgroundProcess));
_thread.Start();
}
}
public static void Stop()
{
lock (_syncRoot)
{
if (!Running)
return;
Running = false;
// Signal the thread to stop.
_event.Set();
// Wait for the thread to have stopped.
_thread.Join();
_thread = null;
}
}
private static void BackgroundProcess()
{
int count = 0;
DateTime date1 = new DateTime(2011, 2, 5);
while (System.DateTime.Compare(System.DateTime.Now, date1) < 0)
{
downloadAndParse();
// Wait for the event to be set with a maximum of the timeout. The
// timeout is used to pace the calls to downloadAndParse so that
// it not goes to 100% when there is nothing to download and parse.
bool result = _event.WaitOne(TimeSpan.FromSeconds(45));
// If the event was set, we're done processing.
// if (result)
// break;
count++;
}
}
private static void downloadAndParse()
{
NewHive.MyServ newServe = new NewHive.MyServ();
NewHive.CsvDownload newService = new NewHive.CsvDownload();
//NewHive.MyServ newServe = new NewHive.MyServ();
string downloadSuccess = newService.CsvDownloader();
if (downloadSuccess == "Success")
{
string parseSuccess = newService.CsvParser();
}
newServe.updateOthersInPosition();
}
}
あなたはこれに対する解決策は何だと思いますか? – meetpd
@meetpd - 私は特に私が試して働くことを保証したものはありません。これは私の仕事の課題の1つで達成しなければならない課題でもあり、私は現在の未確認のアイデアを共有することができます。私はすべてのロジックをコマンドラインパラメータを受け入れるコンソールまたはwinforms実行可能ファイルに配置し、この記事で説明した非同期メソッドを使用して実行します:http://www.scribd.com/doc/12733315/How-to -Execute-Command-in-C –