我正在尝试创建一种方法,允许我以顺序流保存,即示例代码:
Private sub BlahWithSave()
'PERFOR ACTIONS
Blah()
Blah2()
'SAVE CHANGES TO DB
General.SaveState()
'CARRY ON PERFORMING ACTIONS AFTER SAVE CARRIED OUT
Blah3()
Blah4()
End Sub目前,我一直在使用ManualResetEvent和AutoResetEvent,但还没有开始,所以我想我会问一下。下面是我对SaveState方法的最后一次迭代:
#Region " SAVE CHANGES "
Private Shared ManualWaitEvent As System.Threading.ManualResetEvent
Public Shared Sub SaveState()
ManualWaitEvent = New System.Threading.ManualResetEvent(False)
MyDataContext.BeginSaveChanges(Sub(result As IAsyncResult)
ManualWaitEvent.Set()
Deployment.Current.Dispatcher.BeginInvoke(Sub()
Dim response As DataServiceResponse = MyDataContext.EndSaveChanges(result)
End Sub)
End Sub, MyDataContext)
ManualWaitEvent.WaitOne()
End Sub
#End Region问题是它只停留在ManualWaitEvent.WaitOne,而不会进入BeginSaveChanges回调。你知道我哪里错了吗?或者是关于我如何完成这个的另一个想法。
谢谢
发布于 2011-07-01 01:13:48
不要试图强制它变得同步,而要使用回调函数。
例如:您可以将原始调用拆分为两个方法调用,并将第二部分设置为save的回调。当然,你需要更新你的保存方式,但这应该不会太难。
Private sub BlahWithSave()
'PERFOR ACTIONS
Blah()
Blah2()
'SAVE CHANGES TO DB
General.SaveState(BlahWithSavePart2)
End Sub
Private sub BlahWithSavePart2()
'CARRY ON PERFORMING ACTIONS AFTER SAVE CARRIED OUT
Blah3()
Blah4()
End Subhttps://stackoverflow.com/questions/6528903
复制相似问题