0

私は次のコードを持っています..

 Private Sub Application_Exit(ByVal o As Object, ByVal e As EventArgs) Handles Me.Exit
        If MainPage.ModeOfOperation = "PROPOSALMODIFICATION" Then

            MainPage.InitializeServiceEndPoint(client.Endpoint)
            MessageBox.Show("This is a test")
            client.FlagQuotationWithUserAsync(MainPage.FetchQuotationNo, MainPage.FetchReferenceNo, "F", "", "", "")



        End If

    End Sub

しかし、アプリケーションの終了時に非同期呼び出しが許可されていないと思うので、機能しません。

私も次のことをしました

  1. WCF サービスで次のコードを使用して、非同期メソッドを同期に変換します。

OperationContract(AsyncPattern:=False)

そして、次のようにxamlから呼び出します

client.SR_IService1_BeginFlagQuotationWithUser(FetchQuotationNo, ID, "T", UserRole, ProdCode, UserID, Nothing, Nothing)

ただし、アプリケーションの終了時に関数が呼び出されていません。

注意してください:主な問題は、アプリケーションの終了/終了時に何かをしたいので、WCF Webサービスを呼び出さなければならないことです。助けてください、今は何もわかりません..

4

2 に答える 2

0

あなたが達成しようとしていることがわかります。残念ながら、アプリケーションの終了中に、現在の方法で実行しようとすると問題が発生する可能性があります。これは、サービス参照へのプロキシがあり、理解する必要がある舞台裏で行われていることがたくさんあるためです。また、アプリケーションがシャットダウンする理由が System.ServiceModel 例外である場合、この種の呼び出しを行うことができないことはほぼ確実です。また、ベスト プラクティスではありません。代わりに、REST を使用してください。これは100%機能します

于 2013-04-18T14:19:01.683 に答える
0

メソッド呼び出しを同期に変更することを検討しますが、「一方向」です。

その後、aplication_exit コード ビハインド メソッドから呼び出します。

この場合、アプリはまだ「存在」していると思います(メソッドの実行が完了するまで)。

簡単な例については、この簡単な投稿をご覧ください:サンプルの起動が必要で、WCF サービスへの非同期呼び出しを忘れる

このソリューションも役立つ場合があります: http://www.codeproject.com/Articles/564450/CallingplusintoplusyourplusdatabaseplusonplusSilve

于 2013-04-18T12:53:25.207 に答える