編集: クライアントソリューションをデバッグモードで使用すると、すべてが意図どおりに機能することに注意してください。サービスを持つソリューションは、デバッグモードの中または外で正常に動作します。その後、非同期マルチスレッドクライアントメソッドをWCFサービスが終了するのを待ってから実行を続行する
私は、サーバーにユーザーがアップロードした.zipファイルを保存し、ファイルアップローダーに取り組んでいる、それを解凍、そこから異なる場所の束にコピーし、それを(Webサービスを使用)、およびアップロードされた.zipファイルと解凍されたファイルが削除されます。
ので:
1)アップロードしたファイル
2を解凍)がQueueUserWorkItem(メソッド名)を使用し、 "ありがとう" ページ
3)メソッド名(にユーザーをリダイレクトします)は、解凍されたフォルダを他の場所にコピーするWCF Webサービスコールを2つ作成します。サービスコールが完了していないと、ファイルはもはや必要では一度
string copyToPaths = UploaderService.StartFolderUpload(_fileCategoryName, topDir);
UploaderService.CompleteFolderUpload(copyToPaths);
4)は、ここで問題(古いファイルを削除します)
だから私の問題は、WCFサービスを呼び出す方法は待たないということです完了したことを知らせる前にサービスコールを完了し、ファイルを削除します。アップロードされたファイルを削除すると、Webサービスはそれらのファイルを他の場所にコピーすることはできません。
QueueUserWorkItemで呼び出されたメソッドをWebサービス呼び出しが終了するのを待ってから実行を続行するにはどうすればよいですか?
問題に関連して質問タイトルを更新する必要があります。あなたのタグを使ってあなたの技術などを教えてください – James
あなたの投稿はファイルの削除が 'QueueUserWorkItem(MethodName)'の下の行で行われることを示唆しています。 'QueueUserWorkItem'がすぐに戻るので、これはうまくいきません。それらはMethodNameの最後にあるはずです。 –
いいえ - 削除は、QueueUserWorkItem(MethodName)呼び出しの後ではなく、MethodName()メソッドの最後で行われます。 – Buchannon