2011-08-16 36 views
0

嗨,我有一個使用服務引用到Web服務的WPF應用程序...服務引用客戶端錯誤?

現在我有跟蹤的這個進步的GUI組件...

但我似乎有某種這只是在某些機器上發生的,而不是經常發生。 我開始使用MethodNameAsync進行調用,並顯示進度條,直到發生匹配的Completed事件。

有時我打電話連續3種不同的異步方法,但只有他們兩個人讓他們的Completed事件引發所以GUI將被鎖定,應用程序必須重新啓動。

被完全挫敗了幾個星期後,我發現事件AppDomain.CurrentDomain.FirstChanceException,所以我迷上了它,並開始記錄所有FirstChanceExceptions ..

第二個事件之前引發一個的System.Net.Sockets .SocketException「提供了一個無效參數」,之後引發一個System.ObjectDisposedException「無法訪問已處理的對象」。被拋出都是第一次機會異常..

我想我的WCF客戶端忘掉第三個方法調用,當發生這種情況,但我的加載指示燈不..

因此,這是一個已知的錯誤還是我失去了一些事情?根據要求

編輯代碼:

mCheckInService = New CheckInServiceClient() 
AddHandler mCheckInService.GetPersonActivitiesCompleted, AddressOf CheckInService_GetPersonActivitiesCompleted 
AddHandler mCheckInService.GetPersonArticlesCompleted, AddressOf CheckInService_GetPersonArticlesCompleted 
AddHandler mCheckInService.GetPersonImageCompleted, AddressOf CheckInService_GetPersonImageCompleted 


Dim workItem As WorkItem = Context.WorkDisplayService.AddWorkItem(Me, Resources.Label.DownloadingPersomImage) 
mCheckInService.GetPersonImageAsync(Context.Session, person, workItem) 

workItem = Context.WorkDisplayService.AddWorkItem(Me, "Hämtar aktiviteter") 
mCheckInService.GetPersonActivitiesAsync(Context.Session, Person, workItem) 

workItem = Context.WorkDisplayService.AddWorkItem(Me, Resources.Label.DownloadingPersonArticles) 
mCheckInService.GetPersonArticlesAsync(Context.Session, person, workItem) 


Private Sub CheckInService_GetPersonActivitiesCompleted(ByVal sender As Object, ByVal e As GetPersonActivitiesCompletedEventArgs) 
    Dim workItem As WorkItem = CType(e.UserState, WorkItem) 
    If (Context.WorkDisplayService.FinishWorkItem(Me, workItem)) Then 

Private Sub CheckInService_GetPersonArticlesCompleted(ByVal sender As Object, ByVal e As GetPersonArticlesCompletedEventArgs) 
    Logger.Trace("CheckInService_GetPersonArticlesCompleted()") 
    Dim workItem As WorkItem = CType(e.UserState, WorkItem) 
    If (Context.WorkDisplayService.FinishWorkItem(Me, workItem)) Then 

Private Sub CheckInService_GetPersonImageCompleted(ByVal sender As Object, ByVal e As GetPersonImageCompletedEventArgs) 
    Logger.Trace("CheckInService_GetPersonImageCompleted()") 
    Dim workItem As WorkItem = CType(e.UserState, WorkItem) 
    If (Context.WorkDisplayService.FinishWorkItem(Me, workItem)) Then 

其GetPersonActivitiesAsync從未被完成..

編輯:

修復此暫時不使用異步方法,而是使用一個線程,將調用他們一個接一個。現在這不是一個完美的解決方案,我應該能夠使用異步方法...

+3

顯示一些代碼plz,你怎麼crate代理,你如何調用方法等。 –

回答

1

這裏的線索是「燦不訪問處置的對象「。

有時有回調代碼會發生什麼事是應該聽回調的代碼已被釋放,所以當回調回來,沒有人聽。

+0

好吧,這聽起來不錯,但我沒有追求作出反應,作爲它唯一拋出的第一次機會異常和處理代理?.. – Peter

+0

System.ObjectDisposedException無法訪問處置的對象。 對象名稱:System.Net.Sockets.NetworkStream。 VID System.Net.Sockets.NetworkStream.UnsafeBeginWrite(字節[]緩衝液,的Int32偏移的Int32大小,AsyncCallback的回調,對象狀態) 我到的NetworkStream沒有訪問... – Peter