問題タブ [iasyncresult]
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.
c# - dll の Asynccallback によりフォームがフリーズする
ボタンとテキスト ボックスを含むフォーム Form1 があります。ボタンをクリックすると、USB デバイスからデータを取得する必要があります。何らかの理由で、約 2% しか正しく機能しません (100 回のクリックのうち 2 回の正しい応答を得ることができました)。Form1 のコードは次のとおりです。
USB 通信を処理するコードは DLL Lib1 にあります (以下のコードの一部):
動作しない場合、fileStreamDeviceData.BeginRead 付近で停止し、Form1 がフリーズします。
テストのために、まったく新しいプロジェクトを作成し、DLL を使用する代わりに、すべての DLL コードを Form1 にコピーしました。このオプションは、100% の確率で問題なく機能します。私の質問は、なぜ DLL で動作しないのですか?
更新:運が良ければ動作し始め、アプリケーションを閉じるまで無期限に動作します。それから、私はそれを再び機能させるために努力し続けなければなりません。この問題のトラブルシューティング方法は?
c# - HttpWebRequest 非同期メソッドの実装
さまざまな理由から、使用するサービスで非常に頻繁に HttpWebRequest クラスを使用してアウトバウンド HTTP 要求を送信するなど、既存の同期 IO バウンド コードを変更することを目指してきました。
async/await と .NET 4.5 への変更は認識していますが、現在は .NET 4.0 を使用しています。私は Microsoft.Bsl.Async も知っていますが、他の理由から、現在これはオプションではありません。
HttpWebRequestを使用した Async に関するこの記事のサンプル コードを参照として使用しています。
私が持っている質問は、UI を更新していないか、BeginXXXX と EndXXXX の間で他のことを行っていないが、アウトバウンド IO 呼び出しの時間がそれぞれ 40 秒以上かかる場合、この非同期を実装する価値があるか、それとも固執する必要があるかです。同期実行するには?
c# - c# Webrequest Post と GetResponse
XML を Web サイトに送信するプログラムを作成しています。書かれたコードは正常に動作しますが、何らかの理由で動作を停止し、System.Net.ProtocolViolationException をスローすることがあります。プログラムを閉じて再実行できます-正常に動作し始めます。
私が使用しているコードは次のとおりです。
response =request.GetResponse()
失敗してエラーが発生したときです
ContentLength>0 または SendChunked==true を設定する場合は、要求本文を指定する必要があります。これを行うには、[Begin]GetResponse の前に [Begin]GetRequestStream を呼び出します。
どんな助けでも大歓迎です。
vb.net - VB.NET でプライベート プロパティ TcpClient.BeginConnect、IAsyncResult の結果を取得する
VB.NET にアプリケーションがあります。Visual Studio 2010 でアプリケーションを実行し、マウスオーバーするIAsyncResult
と、保護されたプロパティが表示されますResult
。アプリケーションでプロパティの値を読み取りたい。どうやってやるの?
rslt にマウスを合わせると、VS はそれが
System.Net.Sockets.Socket+MultipleAddressConnectAsyncResult
以前に型にプラス (+) を見たことがない型であることを示し、その型の変数を宣言することができません。プロパティを展開すると、値がResult
のプロパティを持つ保護されたプロパティがあります。そのメッセージにアクセスする必要があります。にもアクセスしたいのですが、それはあまり重要ではありません。Message
"No connection could be made because the target machine actively refused it 192.0.0.10:50035"
addresses
c# - IAsyncResult と ThreadPool の比較
私は最近 IAsyncResult に出くわしたばかりで、かなり長い間遊んでいます。私が実際に疑問に思っているのは、より優れた代替 ThreadPool があるのに、なぜ IAsyncResult を使用するのかということです。両方についての私の現在の理解から、私はほぼすべての状況で ThreadPool を使用することを選択します。だから私の質問は、 IAsyncResult が別のものよりも優先されるコンテキストはありますか?
私が IAsyncResult を好まない理由:
- BeginXXX と EndXXX で複雑さを追加
- 戻り値を気にしない場合、呼び出し元は EndXXX の呼び出しを忘れる可能性があります
- API 設計の冗長性の増加 (非同期で実行するすべてのメソッドに対して、Begin および End ラッパー メソッドを作成する必要があります)
- 可読性の低下
コードに入れるには:
スレッドプール
IAsyncResult
c# - 汎用デリゲート EndInvoke を作成するには?
だから私は次のものを持っています:
そして、リストは延々と続くので、メソッド内では、各 EndInvoke に try catch を配置したくありません。例外をスローすることもありますが、システムを停止してはならず、他の Foos を続行する必要があるためです。そして、それぞれに try キャッチがある場合、メソッド内で非常に多くのスペースを占有します。
end invoke を呼び出す一般的な方法はありますか? それで、期待される結果を返すことができますか?
c# - Task が IAsyncResult を実装しているのに、AsyncWaitHandle メンバーが含まれていないのはなぜですか?
たぶんそれはばかげた質問です。
Task
クラスは次のように宣言されます。
IAsyncResult
インターフェイスは次のように宣言されます。
しかし、メンバーはクラスまたはインスタンス AsyncWaitHandle
に存在しません。Task
このコード:
次のコンパイル エラーが発生します。
エラー 1 'System.Threading.Tasks.Task' には 'AsyncWaitHandle' の定義が含まれておらず、タイプ 'System.Threading.Tasks.Task' の最初の引数を受け入れる拡張メソッド 'AsyncWaitHandle' が見つかりませんでした (ディレクティブまたはアセンブリ参照を使用していますか?)
ただし、これはコンパイルされるだけではありません。
しかし、メンバーが存在するため、機能します。この魔法は何ですか?
それはコンパイラのトリックですか、それとも別の方法で隠されていますか?
乾杯。