svnno****@sourc*****
svnno****@sourc*****
2010年 11月 29日 (月) 20:52:04 JST
Revision: 1130 http://sourceforge.jp/projects/tween/svn/view?view=rev&revision=1130 Author: kiri_feather Date: 2010-11-29 20:52:04 +0900 (Mon, 29 Nov 2010) Log Message: ----------- 終了時にStream閉じるように Modified Paths: -------------- branches/UserStream/Tween/Tween.vb branches/UserStream/Tween/Twitter.vb -------------- next part -------------- Modified: branches/UserStream/Tween/Tween.vb =================================================================== --- branches/UserStream/Tween/Tween.vb 2010-11-29 10:17:11 UTC (rev 1129) +++ branches/UserStream/Tween/Tween.vb 2010-11-29 11:52:04 UTC (rev 1130) @@ -313,6 +313,7 @@ Private Sub TweenMain_Disposed(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Disposed '後始末 + If tw IsNot Nothing Then tw.Dispose() SettingDialog.Dispose() TabDialog.Dispose() SearchDialog.Dispose() @@ -1237,7 +1238,6 @@ addCount = _statuses.SubmitUpdate(soundFile, notifyPosts, isMention) If _endingFlag Then Exit Sub - 'リストに反映&選択状態復元 Try For Each tab As TabPage In ListTab.TabPages @@ -1254,9 +1254,9 @@ Catch ex As Exception 'アイコン描画不具合あり? End Try - Me.SelectListItem(lst, _ - _statuses.IndexOf(tab.Text, selId(tab.Text)), _ - _statuses.IndexOf(tab.Text, focusedId(tab.Text))) + 'Me.SelectListItem(lst, _ + ' _statuses.IndexOf(tab.Text, selId(tab.Text)), _ + ' _statuses.IndexOf(tab.Text, focusedId(tab.Text))) End If lst.EndUpdate() If tabInfo.UnreadCount > 0 Then @@ -1295,7 +1295,6 @@ ex.Data("Msg") = "Ref2" Throw End Try - '新着通知 NotifyNewPosts(notifyPosts, soundFile, Modified: branches/UserStream/Tween/Twitter.vb =================================================================== --- branches/UserStream/Tween/Twitter.vb 2010-11-29 10:17:11 UTC (rev 1129) +++ branches/UserStream/Tween/Twitter.vb 2010-11-29 11:52:04 UTC (rev 1130) @@ -37,6 +37,8 @@ Public Class Twitter + Implements IDisposable + Delegate Sub GetIconImageDelegate(ByVal post As PostClass) Private ReadOnly LockObj As New Object Private followerId As New List(Of Long) @@ -2910,7 +2912,7 @@ Me._streamBypass = True If userStream IsNot Nothing Then userStream.Dispose() userStream = Nothing - RaiseEvent UserStreamStopped() + If Not _endingFlag Then RaiseEvent UserStreamStopped() End Sub Private Sub ReconnectUserStream() @@ -3041,4 +3043,37 @@ #End Region End Class + +#Region "IDisposable Support" + Private disposedValue As Boolean ' 重複する呼び出しを検出するには + + ' IDisposable + Protected Overridable Sub Dispose(ByVal disposing As Boolean) + If Not Me.disposedValue Then + If disposing Then + ' TODO: マネージ状態を破棄します (マネージ オブジェクト)。 + Me.StopUserStream() + End If + + ' TODO: アンマネージ リソース (アンマネージ オブジェクト) を解放し、下の Finalize() をオーバーライドします。 + ' TODO: 大きなフィールドを null に設定します。 + End If + Me.disposedValue = True + End Sub + + ' TODO: 上の Dispose(ByVal disposing As Boolean) にアンマネージ リソースを解放するコードがある場合にのみ、Finalize() をオーバーライドします。 + 'Protected Overrides Sub Finalize() + ' ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。 + ' Dispose(False) + ' MyBase.Finalize() + 'End Sub + + ' このコードは、破棄可能なパターンを正しく実装できるように Visual Basic によって追加されました。 + Public Sub Dispose() Implements IDisposable.Dispose + ' このコードを変更しないでください。クリーンアップ コードを上の Dispose(ByVal disposing As Boolean) に記述します。 + Dispose(True) + GC.SuppressFinalize(Me) + End Sub +#End Region + End Class