我有以下代码..
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
但它不起作用,因为我认为在应用程序退出时不允许异步调用。
我也做了以下
OperationContract的(AsyncPattern:= FALSE)
然后从xaml调用它
client.SR_IService1_BeginFlagQuotationWithUser(FetchQuotationNo, ID, "T", UserRole, ProdCode, UserID, Nothing, Nothing)
但是在应用程序退出时仍未调用该函数。
请注意:主要问题是我想在应用程序关闭/退出时执行某些操作,并且我必须调用WCF Web服务。请帮助我现在不知道..
答案 0 :(得分:0)
我会考虑将您的方法调用更改为同步,但“单向”。
在这之后,我会从aplication_exit代码后面的方法中调用它。
我认为在这种情况下你的应用程序仍然“存在”(直到方法执行没有完成)。
请看一下这个简单的帖子,例如:Need sample fire and forget async call to WCF service
此解决方案也可能有所帮助:http://www.codeproject.com/Articles/564450/CallingplusintoplusyourplusdatabaseplusonplusSilve
答案 1 :(得分:0)
我看到你想要完成的事情。不幸的是,当应用程序退出时,您可能会遇到尝试以您的方式执行此操作的问题。这是因为你有一个服务引用的代理,并且你需要了解的幕后有很多东西。此外,如果应用程序关闭的原因是由于System.ServiceModel异常,则几乎可以保证您无法进行此类调用。这也不是最佳做法。 相反,只需使用REST。这将100%工作