問題タブ [request-cancelling]
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.
iphone - cancelPreviousPerformRequestWithTargetは、performSelectorで開始された以前に遅延したスレッドをキャンセルしません
を使用して遅延スレッドを起動しましたperformSelector
が、ユーザーは現在のビューで戻るボタンを押すことができ、deallocが呼び出されます。これが発生しても、スレッドが呼び出されているように見えます。これにより、スレッドが書き込もうとしているプロパティが解放されたため、アプリがクラッシュします。これを解決するためにcancelPreviousPerformRequestsWithTarget
、前のリクエストをキャンセルするために電話をかけようとしていますが、機能していないようです。以下は、いくつかのコードスニペットです。
私はここで何か間違ったことをしていますか?このメソッドmyStopUpdatingLocation
は、performリクエストを呼び出しているのと同じクラスで定義されています。
もう少し背景。私が実装しようとしている機能は、ユーザーの場所を見つけ、その場所の周りのいくつかの場所をグーグルで検索し、地図上にいくつかの注釈を表示することです。で場所の更新viewDidLoad
を開始しCLLocationManager
ます。タイムアウト内に希望の精度が得られない場合は、6秒後にタイムアウトを組み込み、これを行うためにを使用しperformSelector
ています。ユーザーがビューの[戻る]ボタンをクリックすると、すべてのプロパティが解放されてもこのスレッドが実行され、クラッシュが発生する可能性があります。
前もって感謝します!
ジェームズ
c# - 深くネストされたプロセスをキャンセルする方法
「マネージャー」のようなクラスのクラスがあります。その機能の1つは、クラスの長時間実行プロセスをシャットダウンする必要があることを通知することです。これは、クラスに「IsStopping」というブール値を設定することによって行われます。
さて、DoWork()は巨大な関数でした、そして私はそれをリファクタリングすることに決めました、そしてプロセスの一部としてそれのいくつかを他のクラスに分割しました。問題は、これらのクラスの一部には、isStoppingがtrueであるかどうかをチェックする必要がある長時間実行される関数もあることです。
ここでの私のオプションは何ですか?
isStoppingを参照で渡すことを検討しましたが、外部オブジェクトが必要なため、あまり好きではありません。私は、追加のクラスを可能な限りスタンドアロンで依存性のないものにすることを望んでいます。
isStoppingプロパティを作成してから、内部クラスをサブスクライブできるイベントを呼び出すことも検討しましたが、これは非常に複雑に思えます。
もう1つのオプションは、.net 4タスクが使用するものと同様の「プロセスキャンセルトークン」クラスを作成し、そのトークンをそれらのクラスに渡すことでした。
この状況にどのように対処しましたか?
編集:
また、MoreWorkには、実行時間の長い可能性のあるメソッドをインスタンス化して呼び出すEvenMoreWorkオブジェクトがある可能性があることも考慮してください。私が探しているのは、呼び出しツリーの下にある任意の数のオブジェクトに信号を送って、実行中の処理を停止し、クリーンアップして戻るように指示できる方法だと思います。
EDIT2:
これまでの回答ありがとうございます。使用する方法については実際のコンセンサスがないようで、誰もが異なる意見を持っています。これはデザインパターンのようです...
c# - BackgroundWorker を一時停止するにはどうすればよいですか? または似たようなもの
を使用して、ループ内でBackgroundWorker
呼び出していくつかの Web サイトをダウンロードしていました。WebClient.DownloadString
ユーザーがダウンロードの途中でキャンセルできるオプションが欲しかったので、ループの途中でオンになってCancelAsync
いることがわかったときにいつでも電話しました。CancellationPending
DownloadString
しかし、関数が時々フリーズすることに気づいたので、DownloadStringAsync
代わりに使用することにしました (これはすべて、で作成された他のスレッド内にありますBackgroundWorker
)。そして、 を呼び出した後にループと関数を終了しなければならないことでコード全体を書き直したくないので、 をDownloadStringAsync
呼び出した直後に while ループを作成しましたbool Stop
。DownloadStringCompleted
が呼び出されたとき、またはユーザーが操作のキャンセルを要求したとき。
さて、奇妙なことは、デバッグ バージョンで正常に動作することです。しかし、リリース 1 では、メイン スレッドであるかのように while ループでプログラムがフリーズします。
jquery - jQuery - フォームの送信をキャンセルします(「return false」を使用しますか?)?
フォームの送信をキャンセルしようとしているときに、少し問題が発生しています。私はこのチュートリアルに従っています (ログインスクリプトを作成していませんが)、彼にとってはうまくいっているようです。
これが私のフォームです:
そして、ここにjqueryがあります:
私はすでにヘッダーにjQueryをインポートしており、それが機能していることを知っています。最初は時代遅れかもしれないと思っていましたが、実際には「ちょうど」1年前です。
それで、誰かが何が悪いのか分かりますか?
前もって感謝します。
編集:私が読んだことから、送信を中止する最も簡単で適切な方法はfalse を返すことですか? しかし、私はそれを機能させることができないようです。フォーラムを検索したところ、役立つスレッドがいくつか見つかりましたが、実際には機能していません。何かを台無しにしているに違いない。
java - Java サーブレットからのダウンロード中にユーザーがキャンセルを押したかどうかをどのように判断できますか?
Java サーブレットからのダウンロード中にユーザーがキャンセルを押したかどうかをどのように判断できますか? 出力ストリームの println() ブロックである IE で何が起こっているように見えますか。ヒットキャンセルを使いましたが、これをタイムアウトさせる方法などはありますか?
iphone - iPhone - cancelPerformSelectorWithTarget が機能しない
UIView のサブクラスでこれを行う場合:
次に、次のようにキャンセルします(両方のバージョンを試しました):
「doSomething」メソッドは引き続き呼び出されます。私は何を間違っていますか?
java - Javaスレッド:シャットダウンフラグとキャッチ例外
キャンセルを処理するスレッドでは、次のようなコードがよく見られます
私が知りたいのは、これであるか、なぜこれであるか、これを行うよりも優れている
私の見方では、後者の場合、shutdownvarをまったく気にする必要はありません。
ajax - 完了しない未解決の Ajax リクエストを正しくキャンセルする方法は?
この質問は、私が使用していない JQuery のコンテキストで質問されることを除いて、別の質問に似ています。
私のページのAjax コードは、 10 秒ごとに POST を発行します。時々、~600 リクエストごとに、クライアント コードが応答を待ってハングしますが、応答はまったく表示されません。
コードはタイムアウトになり、Ajax リクエストを再発行しますが、最初に、未処理のリクエストに関するすべてをクリーンアップしたいと考えています。
物事が適切に片付けられるように未処理のリクエストをキャンセルする正しい方法は何ですか?
ありがとう!
javascript - JavaScriptを使用してhttpリクエストをキャンセルする方法
イベントにイベント ハンドラーが関連付けられているページがありますonclick
。GET
イベントが発生すると、テキストボックスの内容がリクエストに渡されます。URLが同じドメインにないため、スクリプトタグを作成し、このようにURLをソースに添付します
そのイベントが発生し、複数回前のGET
リクエストをすべてキャンセルしたい場合(まだ応答を受信している可能性があるため)、GET
最新のテキストでリクエストを行います。しかし、これには以前のリクエストをキャンセルする必要があります。私は試した
しかし、これは では機能しませんFirefox
(私は を使用してFirefox 5
います)Google Chrome
。
更新
Alfred が提案したように、以前window.stop
はリクエストをキャンセルしていましたが、リクエストをキャンセルせずに電話を切りました。これは、firebug を調べると、リクエストが行われているように見えますが、応答がないことを意味します。
winapi - I/Oが重複しているTCP接続
I / Oが重複しているTCP接続要求を開始し、Windowsで接続が完了する前にキャンセルすることはできますか?少なくともWindowsXPSP2をサポートする必要があります。