問題タブ [background-thread]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
5 に答える
80998 参照

android - 常にバックグラウンドでサービスを実行するにはどうすればよいですか?

組み込みのSMSアプリに似たアプリを作成中です。

必要なもの:

  • 常にバックグラウンドで実行されているサービス
  • 5分ごと。サービスはデバイスの現在の場所を確認し、Webサービスを呼び出します
  • 特定の基準が満たされている場合、サービスは通知を生成する必要があります(SMSアプリと同様)
  • 通知をクリックすると、ユーザーはアプリに移動します(SMSアプリと同じように)
  • アプリがインストールされたら、サービスを開始する必要があります
  • デバイスを再起動したら、サービスを開始する必要があります

私が試したこと: -Android
がサービスを強制終了するまで正常に機能する通常のサービスを実行する
-AlarmManagerを使用して5分を作成します。サービスへのインターバル呼び出し。しかし、私はこの仕事をすることができませんでした。

0 投票する
3 に答える
12267 参照

objective-c - iOS4バックグラウンドタイマーの作成

私は(基本的に)iOS 4でバックグラウンドタイマーを作成する必要があります。これにより、特定の時間が経過したときにコードを実行できるようになります。いくつかを使用してこれを達成できることを読みました[NSThread detachNewThreadSelector: toTarget: withObject:];が、実際にはどのように機能しますか?スレッドがバックグラウンドにも残っていることを確認するにはどうすればよいですか。ユーザーに通知するのではなく、コードを実行する必要があるため、ローカル通知は機能しません。

助けていただければ幸いです!

0 投票する
1 に答える
735 参照

multithreading - バックグラウンド スレッドを使用した WCF NetTCP

バックグラウンド:

NetTCP バインディングを使用して Windows サービス内で WCF サービスをホストするシステムがあります。コレクションに新しいサービスを追加するには、<system.serviceModel -> services /> 内に標準の WCF 構成エントリを追加し、サービスを初期化する必要があるホスティング フレームワークに通知するカスタム構成セクション内に行を追加します。各サービスは、独自のバックグラウンド スレッドと AppDomain インスタンスで初期化され、すべてが分離された状態に保たれます。

サービスの初期化方法の例を次に示します。

ServerManager インスタンスには、標準の WCF 実装 (ServiceHost.Open/Close など) がある単一のサービス インスタンスにそれぞれ関連付けられている ServiceManagers のコレクションがあります。ServiceManager インスタンスは、BaseServerHost 基本クラス (抽象) を使用してサービスのインスタンスを (構成に基づいて - 標準のアセンブリ/型定義を持って) インスタンス化します。フレームワークがそれを使用できるようにするには、すべてのサービスがこれを継承する必要があります。初期化プロセスの一部として、BaseServerHost はいくつかのイベントを公開します。具体的には、所有する ServiceManager がアタッチする UnhandledException イベントです。(この部分は、以下の質問に関連して重要です。)

このプロセス全体は、私たちにとって非常にうまく機能します (1 つのインスタンスが 63 のサービスを実行しています)。なぜなら、WCF について何も知らない人を連れてきて、サービスを非常に迅速に作成できるからです。

質問:

私が遭遇した問題は、バックグラウンド スレッドに関するものです。エンドポイントで公開されているメソッドの大部分は、他のシステムへのメッセージの送信など、標準の挿入/更新/削除メソッド呼び出しの後にかなりの量のアクティビティを実行します。パフォーマンスを維持するために (フロントエンドは Web ベースです)、最初の挿入/更新/削除メソッドに処理を任せてから、バックグラウンド スレッドを起動して、エンド ユーザーが待つ必要のないすべてのものを処理します。完了します。このオプションは、そのバックグラウンド スレッドの何かが処理されず、Windows サービス全体がダウンするまでうまく機能します。

私のすべての調査に基づいて、グローバルな try/catch を実装する方法がないことがわかりました (バックグラウンド クラッシュの 1.1 処理を有効にするハッキングされた構成を使用することを除く)。 . それはさておき、私が見つけたのは、WCFホスティングのエンドポイント側で、各呼び出しで独自のスレッドにあるように見え、そのスレッドが「親」と通信するのは悪夢でした。サービスの観点から見たレイアウトは次のとおりです。

ビジネス レイヤーのバックグラウンド スレッドで例外をキャッチすると、それを Endpoint インスタンス (BaseServerHost から継承) にバブルアップし、この特定のサービス (インスタンス化した所有 ServiceManager によってアタッチされた) に対して BaseServerHost の UnhandledException イベントを発生させようとします。それ)。残念ながら、イベント ハンドラーはもう存在しないため、何もしません。これを機能させるために多くのことを試みましたが、これまでのところ、私の努力はすべて無駄になっています。

完全なモデル (以下に示す) を見ると、ビジネス層にその親エンドポイント (これは機能します) を認識させる必要があり、エンドポイントは実行中の BaseServerHost インスタンスを認識し、それをホストしている ServiceManager を認識する必要があります。エラーは、標準のログ記録手順で使用するために、これまで泡立てることができます。

私は運が悪い静的クラスを試してみましたが、ServerManager を静的にし、ServiceManagers の以前の内部コレクションを公開することさえしましたが (シャットダウンできるように)、そのコレクションも常に空または null です。

これを機能させることについての考えはありますか?

編集:もう少し掘り下げた後、私がこれをどのように機能させるかを正確に示す例を見つけました。標準の ASP.NET Web サイトでは、任意のページ/ハンドラーなどで、HttpContext.Current プロパティを使用して、その要求の現在のコンテキストにアクセスできます。これはまさに、そのサービスの所有 ServiceManager を返す「ServiceManager.Current」でこれを機能させたい方法です。おそらくそれが役立ちますか?

0 投票する
1 に答える
1421 参照

ios - バックグラウンドスレッドで関数を呼び出す ios-ネストされた関数呼び出しに何が起こるか

私のメイン コード (UIActivityIndi​​catorView を表示するため) では、バックグラウンド スレッドで関数 foo() を呼び出しています。次に、foo() によって呼び出される関数はどうなりますか? これらの関数も同じバックグラウンド スレッドで呼び出されて実行されますか?

0 投票する
1 に答える
638 参照

iphone - (iphone)UIViewに関してバックグラウンドスレッドですべきでないことは何ですか?

ほとんどの UI 関連は、メイン以外のスレッドで行うべきではないことを知っています。
また、UIView 派生クラスの (追加した) ビューに関連しないデータ メンバーを更新できることも知っています。

以下の操作はバックグラウンドスレッドでいいのか、やらないのか。

  1. UIViewの割り当て
  2. (CGRectZeroまたは単にinit)フレーム情報を使用して/使用せずにUIViewを初期化します
  3. UIView のフレーム/画像 (UIImageView の) プロパティを変更する
  4. NSObject 派生クラスのイメージ プロパティを変更します。(UIImageをデータとして扱う)
  5. subviews メソッドでサブビューにアクセスする
  6. など..この問題について明確に定義されたドキュメントはありますか?

ありがとうございました

0 投票する
2 に答える
414 参照

asp.net - バックグラウンド スレッドでイメージを削除すると、ThreadAbortException が発生します。ASP.NET 4

私は VS2010 と ASP.NET 4 を使用しています。アプリケーションで実行されている、実行時間の長いバックグラウンド スレッドが 1 つあります。これは、フォルダー内の最近使用されていないファイルを「クリーンアップ」するように設計されています。EventWaitHandle を使用して不要な CPU 使用率を排除しますが、アプリの存続期間中は実行を続けます。

24 ~ 40 回ほど削除すると、アプリケーションが再起動します。これは、デバッガーが接続されている IIS Express と WebDev サーバーの両方で発生します。バックグラウンド スレッドで例外はスローされませんが、すべてのスレッドで ThreadAbortException が発生し、アプリが再起動します。リダイレクト呼び出しはどこにも行われません。

これらのファイルは、アプリの再起動を引き起こすフォルダーではなく、ルートの「imagecache」フォルダーにあります。フォルダは作成または削除されません。

再起動は、削除の特定のしきい値が発生した後、一定の間隔で発生するようです。

なぜこれが起こっているのか、どうすればそれを止めることができるのでしょうか? 10秒ごとに再起動するのは私には受け入れられません:)

0 投票する
1 に答える
903 参照

vb.net - バックグラウンド スレッド「タイムアウトが発生しました。」を防止します。エラー

ページのクリック イベントに次のコード部分があります。

これは、SendEmails何千ものニュースレター メールを送信するメソッドを実行します。

ただし、次のエラーをログに記録できたため、これはタイムアウトしているようです。

タイムアウトになりました。操作が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。

数千通の電子メールを送信できるようにタイムアウト時間を増やすにはどうすればよいですか?

0 投票する
3 に答える
1919 参照

asp.net - ASP.NET バックグラウンド スレッド

私は、シミュレーション実稼働環境のテストダブルとして機能することを目的とした WCF サービスを含む ASP.NET アプリケーションに取り組んでいます。Web サービス経由で注文を受け取り、数時間後または数日後に (他のシステムで Web サービスを呼び出して) 通知を送信できる、非常に複雑なバックエンドの代わりになります。

このテスト ダブル アプリケーションの最初のリリースの要件の 1 つは、ステートレスであること、つまりデータベースがないことでした。

プロジェクトに参加していない元の開発者によって配置された設計は次のとおりです。

  1. Webサービスで注文を受けます。
  2. バックグラウンド スレッドを生成する
  3. 返信定型文をクライアントに返す
  4. その後、バックグラウンド スレッドは 5 ~ 30 秒間スリープし、通知を送信し、再びスリープし、通知を送信します。これをおそらく 3 ~ 4 回繰り返し、最後に何もすることがなくなったときに終了します。

スレッドが 5 秒から 30 秒スリープするのは、本番システムの何時間も何日もかかる遅延をシミュレートするためのものです。各バックグラウンド スレッドの存続時間は、約 3 分程度です。

現在、設計はその目的のためにうまく機能しているようです。これまでのところ、このアプローチで発生した唯一の問題は、アプリケーションを再起動させる何かが発生した場合 (web.config の変更、新しい DLL の展開、IIS の再起動など)、バックグラウンド スレッドが強制終了されたように見え、保留中の通知がバックグラウンド スレッドは発生しません。

5 秒から 30 秒の遅延は短すぎるため、通知の間隔を 5 分間遅らせるのがより適切であるとお客様が判断しました。これは、バックグラウンド スレッドの有効期間が 20 分を超える可能性があることを意味します。

私の直感では、遅延を 5 分にすることは、この設計ではおそらく良い考えではありません。これについて人々がどのような考えを持っているかを見ることに興味があります。

遅延が増加した場合、この設計の信頼性はどの程度になるでしょうか? これについてコメントできる ASP.NET でバックグラウンド スレッドを長時間実行した経験のある人はいますか?

0 投票する
7 に答える
14896 参照

c# - バックグラウンド スレッドでタイマーを実行する

バックグラウンダー スレッド内で System.Windows.Forms.Timer を使用する方法を探しています。バックグラウンドスレッド内で開始および停止するのに苦労しています。これは私がやっていることです:

次に、backgroundworker_dowork メソッドで私はこれを持っています:

Tick メソッドにはタイマー関連のコードがありますが、何らかの理由で実行されません。上記をUIスレッドで宣言すると動作します。バックグラウンドスレッド内でタイマーを開始するのを手伝ってもらえますか? 私は System.Timers を使いたくないので、それを提案しないでください

ありがとう

0 投票する
6 に答える
31586 参照

python - Django バックグラウンド タスク

Django で数分ごとに SQLite データベースにデータを入力する必要がありますが、データベースが更新できるようになるまで古いデータを提供したいと考えています。(つまり、データが収集されるのをブロックしたくありません。ブロックできるのは、データベースにロックがかかっている場合だけで、その間は選択の余地がありません。)

また、別のプログラムやライブラリをインストールしたくありません。

save()スレッドの問題に遭遇することなく、一連のモデルを呼び出すことができる別のスレッドを設定するにはどうすればよいでしょうか?