私は Asp.net MVC 4 を使用しており、ユーザーがページ上のリンクをクリックしたときにバックグラウンドで関数を実行しようとしています。
私は検索して検索しましたが、どうすればよいかわかりません。
私が実行しようとしている関数は 内の関数でありPhoneNumbersController
、何も返さず、多くの作業を行うだけです。
基本的に、ユーザーは電話番号のリスト (非常に大量の番号) を入力し、クリックします。
サーバーは、これらの電話番号をすべて DB に保存します。次に、サーバーに次のような関数を実行させます。
Foo(int accountId)
{
var account = GetAccountById(accountId);
while (account.IsRunning)
{
var Number = (from n in account.PhoneNumbers
where n.Status = "new"
select n).FirstOrDefault();
// Do some work on Number.
Thread.Sleep(1000); // I'm working with an API that limits you to 1 per second.
account = GetAccountById(accountId);
}
}
そのコードはひどいものですが、例を示すだけです。
おそらく少なくとも 100,000 個の数値を実行する予定なので、これを一時停止して再開できるようにする必要があります (したがって、while(IsRunning) 変数を使用します。その値を false に設定する一時停止関数があります。
これまで非同期リクエストやマルチスレッドを使用したことがない人として、ここで最適なオプションは何でしょうか?
前もって感謝します!