Changeset 29018

Show
Ignore:
Timestamp:
01/25/09 22:27:24 (6 years ago)
Author:
syo68k
Message:

タイムライン取得から帰ってこなくなる現象を修正(要検証)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/vb2005/Tween/Tween/Twitter.vb

    r28957 r29018  
    649649                                    ByVal imgs As Dictionary(Of String, Image), _ 
    650650                                    ByVal imgsS As ImageList) As String 
    651         Try 
    652             If endPage = 0 Then 
    653                 '通常モード(DMはモード関係なし) 
    654                 endPage = 1 
     651        If endPage = 0 Then 
     652            '通常モード(DMはモード関係なし) 
     653            endPage = 1 
     654        End If 
     655        '起動時モード  
     656        Dim num As Integer = (endPage - page + 1) * 2 - 1 
     657        Dim ar(num) As IAsyncResult 
     658        Dim dlgt(num) As GetDirectMessageDelegate 
     659 
     660        For idx As Integer = 0 To num 
     661            If idx Mod 2 = 0 Then 
     662                gType = WORKERTYPE.DirectMessegeRcv 
     663            Else 
     664                gType = WORKERTYPE.DirectMessegeSnt 
    655665            End If 
    656             '起動時モード  
    657             Dim num As Integer = (endPage - page + 1) * 2 - 1 
    658             Dim ar(num) As IAsyncResult 
    659             Dim dlgt(num) As GetDirectMessageDelegate 
    660  
    661             For idx As Integer = 0 To num 
    662                 If idx Mod 2 = 0 Then 
    663                     gType = WORKERTYPE.DirectMessegeRcv 
    664                 Else 
    665                     gType = WORKERTYPE.DirectMessegeSnt 
    666                 End If 
    667                 dlgt(idx) = New GetDirectMessageDelegate(AddressOf GetDirectMessageThread) 
    668                 GetTmSemaphore.WaitOne() 
    669                 ar(idx) = dlgt(idx).BeginInvoke(page + idx, read, endPage + idx, gType, imgs, imgsS, Nothing, Nothing) 
    670             Next 
    671             Dim rslt As String = "" 
    672             For idx As Integer = 0 To num 
    673                 Dim trslt As String = "" 
    674                 trslt = dlgt(idx).EndInvoke(ar(idx)) 
    675                 If trslt.Length > 0 AndAlso rslt.Length = 0 Then rslt = trslt 
    676             Next 
    677             Return rslt 
    678         Finally 
    679             GetTmSemaphore.Release() 
    680         End Try 
     666            dlgt(idx) = New GetDirectMessageDelegate(AddressOf GetDirectMessageThread) 
     667            GetTmSemaphore.WaitOne() 
     668            ar(idx) = dlgt(idx).BeginInvoke(page + idx, read, endPage + idx, gType, imgs, imgsS, Nothing, Nothing) 
     669        Next 
     670        Dim rslt As String = "" 
     671        For idx As Integer = 0 To num 
     672            Dim trslt As String = "" 
     673            trslt = dlgt(idx).EndInvoke(ar(idx)) 
     674            If trslt.Length > 0 AndAlso rslt.Length = 0 Then rslt = trslt 
     675        Next 
     676        Return rslt 
    681677    End Function 
    682678 
     
    687683                                    ByVal imgs As Dictionary(Of String, Image), _ 
    688684                                    ByVal imgsS As ImageList) As String 
    689         If _endingFlag Then Return "" 
    690  
    691         Dim retMsg As String = "" 
    692         Dim resStatus As String = "" 
    693  
    694         _getDm = False 
    695         'endPage = page 
    696  
    697         If _signed = False Then 
    698             retMsg = SignIn() 
    699             If retMsg.Length > 0 Then 
    700                 Return retMsg 
     685        Try 
     686            If _endingFlag Then Return "" 
     687 
     688            Dim retMsg As String = "" 
     689            Dim resStatus As String = "" 
     690 
     691            _getDm = False 
     692            'endPage = page 
     693 
     694            If _signed = False Then 
     695                retMsg = SignIn() 
     696                If retMsg.Length > 0 Then 
     697                    Return retMsg 
     698                End If 
    701699            End If 
    702         End If 
    703  
    704         If _endingFlag Then Return "" 
    705  
    706         'リクエストメッセージを作成する 
    707         Dim pageQuery As String = _pageQry + page.ToString 
    708  
    709         If gType = WORKERTYPE.DirectMessegeRcv Then 
    710             retMsg = DirectCast(CreateSocket.GetWebResponse("https://" + _hubServer + _DMPathRcv + pageQuery, resStatus), String) 
    711         Else 
    712             retMsg = DirectCast(CreateSocket.GetWebResponse("https://" + _hubServer + _DMPathSnt + pageQuery, resStatus), String) 
    713         End If 
    714  
    715         If retMsg.Length = 0 Then 
    716             _signed = False 
    717             Return resStatus 
    718         End If 
    719  
    720         ' tr 要素の class 属性を消去 
    721         Do 
    722             Dim idx As Integer = retMsg.IndexOf("<tr class=""", StringComparison.Ordinal) 
    723             If idx = -1 Then Exit Do 
    724             retMsg = retMsg.Remove(idx + 4, retMsg.IndexOf("""", idx + 11 + 1, StringComparison.Ordinal) - idx - 2) ' 11 = "<tr class=""".Length 
    725         Loop 
    726  
    727         If _endingFlag Then Return "" 
    728  
    729         ''AuthKeyの取得 
    730         'If GetAuthKeyDM(retMsg) < 0 Then 
    731         '    _signed = False 
    732         '    Return "GetDirectMessage -> Err: Busy(1)" 
    733         'End If 
    734  
    735         Dim pos1 As Integer 
    736         Dim pos2 As Integer 
    737  
    738         ''Followerの抽出(Webのあて先リストがおかしいのでコメントアウト) 
    739         'If page = 1 And gType = GetTypes.GET_DMRCV Then 
    740         '    pos1 = retMsg.IndexOf(_followerList) 
    741         '    If pos1 = -1 Then 
    742         '        If follower.Count = 0 Then follower.Add(_uid) 
    743         '        '取得失敗 
    744         '        _signed = False 
    745         '        Return "GetDirectMessage -> Err: Busy(3)" 
    746         '    End If 
    747         '    follower.Clear() 
    748         '    follower.Add(_uid) 
    749         '    pos1 += _followerList.Length 
    750         '    pos1 = retMsg.IndexOf(_followerMbr1, pos1) 
    751         '    Try 
    752         '        Do While pos1 > -1 
    753         '            pos2 = retMsg.IndexOf(_followerMbr2, pos1) 
    754         '            pos1 = retMsg.IndexOf(_followerMbr3, pos2) 
    755         '            follower.Add(retMsg.Substring(pos2 + _followerMbr2.Length, pos1 - pos2 - _followerMbr2.Length)) 
    756         '            pos1 = retMsg.IndexOf(_followerMbr1, pos1) 
    757         '        Loop 
    758         '        follower.RemoveAt(follower.Count - 1) 
    759         '    Catch ex As Exception 
    760         '        _signed = False 
    761         '        Return "GetDirectMessage -> Err: Can't get followers" 
    762         '    End Try 
    763         'End If 
    764  
    765         '各メッセージに分割可能か? 
    766         pos1 = retMsg.IndexOf(_splitDM, StringComparison.Ordinal) 
    767         If pos1 = -1 Then 
    768             '0件(メッセージなし。エラーの場合もありうるが判別できないので正常として戻す) 
     700 
     701            If _endingFlag Then Return "" 
     702 
     703            'リクエストメッセージを作成する 
     704            Dim pageQuery As String = _pageQry + page.ToString 
     705 
     706            If gType = WORKERTYPE.DirectMessegeRcv Then 
     707                retMsg = DirectCast(CreateSocket.GetWebResponse("https://" + _hubServer + _DMPathRcv + pageQuery, resStatus), String) 
     708            Else 
     709                retMsg = DirectCast(CreateSocket.GetWebResponse("https://" + _hubServer + _DMPathSnt + pageQuery, resStatus), String) 
     710            End If 
     711 
     712            If retMsg.Length = 0 Then 
     713                _signed = False 
     714                Return resStatus 
     715            End If 
     716 
     717            ' tr 要素の class 属性を消去 
     718            Do 
     719                Dim idx As Integer = retMsg.IndexOf("<tr class=""", StringComparison.Ordinal) 
     720                If idx = -1 Then Exit Do 
     721                retMsg = retMsg.Remove(idx + 4, retMsg.IndexOf("""", idx + 11 + 1, StringComparison.Ordinal) - idx - 2) ' 11 = "<tr class=""".Length 
     722            Loop 
     723 
     724            If _endingFlag Then Return "" 
     725 
     726            ''AuthKeyの取得 
     727            'If GetAuthKeyDM(retMsg) < 0 Then 
     728            '    _signed = False 
     729            '    Return "GetDirectMessage -> Err: Busy(1)" 
     730            'End If 
     731 
     732            Dim pos1 As Integer 
     733            Dim pos2 As Integer 
     734 
     735            ''Followerの抽出(Webのあて先リストがおかしいのでコメントアウト) 
     736            'If page = 1 And gType = GetTypes.GET_DMRCV Then 
     737            '    pos1 = retMsg.IndexOf(_followerList) 
     738            '    If pos1 = -1 Then 
     739            '        If follower.Count = 0 Then follower.Add(_uid) 
     740            '        '取得失敗 
     741            '        _signed = False 
     742            '        Return "GetDirectMessage -> Err: Busy(3)" 
     743            '    End If 
     744            '    follower.Clear() 
     745            '    follower.Add(_uid) 
     746            '    pos1 += _followerList.Length 
     747            '    pos1 = retMsg.IndexOf(_followerMbr1, pos1) 
     748            '    Try 
     749            '        Do While pos1 > -1 
     750            '            pos2 = retMsg.IndexOf(_followerMbr2, pos1) 
     751            '            pos1 = retMsg.IndexOf(_followerMbr3, pos2) 
     752            '            follower.Add(retMsg.Substring(pos2 + _followerMbr2.Length, pos1 - pos2 - _followerMbr2.Length)) 
     753            '            pos1 = retMsg.IndexOf(_followerMbr1, pos1) 
     754            '        Loop 
     755            '        follower.RemoveAt(follower.Count - 1) 
     756            '    Catch ex As Exception 
     757            '        _signed = False 
     758            '        Return "GetDirectMessage -> Err: Can't get followers" 
     759            '    End Try 
     760            'End If 
     761 
     762            '各メッセージに分割可能か? 
     763            pos1 = retMsg.IndexOf(_splitDM, StringComparison.Ordinal) 
     764            If pos1 = -1 Then 
     765                '0件(メッセージなし。エラーの場合もありうるが判別できないので正常として戻す) 
     766                Return "" 
     767            End If 
     768 
     769            Dim strSep() As String = {_splitDM} 
     770            Dim posts() As String = retMsg.Split(strSep, StringSplitOptions.RemoveEmptyEntries) 
     771            Dim intCnt As Integer = 0   'カウンタ 
     772            Dim listCnt As Integer = 0 
     773            SyncLock LockObj 
     774                listCnt = links.Count 
     775            End SyncLock 
     776            Dim dlgt(20) As GetIconImageDelegate 
     777            Dim ar(20) As IAsyncResult 
     778            Dim arIdx As Integer = -1 
     779 
     780            For Each strPost As String In posts 
     781                intCnt += 1 
     782 
     783                If intCnt > 1 Then  '1件目はヘッダなので無視 
     784                    'Dim lItem As New MyListItem 
     785                    Dim post As New PostClass() 
     786 
     787                    'Get ID 
     788                    Try 
     789                        pos1 = 0 
     790                        pos2 = strPost.IndexOf("""", 0, StringComparison.Ordinal) 
     791                        post.Id = Long.Parse(HttpUtility.HtmlDecode(strPost.Substring(0, pos2))) 
     792                    Catch ex As Exception 
     793                        _signed = False 
     794                        TraceOut("DM-ID:" + strPost) 
     795                        Return "GetDirectMessage -> Err: Can't get ID" 
     796                    End Try 
     797 
     798                    'Get Name 
     799                    Try 
     800                        pos1 = strPost.IndexOf(_parseName, pos2, StringComparison.Ordinal) 
     801                        pos2 = strPost.IndexOf(_parseNameTo, pos1, StringComparison.Ordinal) 
     802                        post.Name = HttpUtility.HtmlDecode(strPost.Substring(pos1 + _parseName.Length, pos2 - pos1 - _parseName.Length)) 
     803                    Catch ex As Exception 
     804                        _signed = False 
     805                        TraceOut("DM-Name:" + strPost) 
     806                        Return "GetDirectMessage -> Err: Can't get Name" 
     807                    End Try 
     808 
     809                    'Get Nick 
     810                    Try 
     811                        pos1 = strPost.IndexOf(_parseNick, pos2, StringComparison.Ordinal) 
     812                        pos2 = strPost.IndexOf(_parseNickTo, pos1 + _parseNick.Length, StringComparison.Ordinal) 
     813                        post.Nickname = HttpUtility.HtmlDecode(strPost.Substring(pos1 + _parseNick.Length, pos2 - pos1 - _parseNick.Length)) 
     814                    Catch ex As Exception 
     815                        _signed = False 
     816                        TraceOut("DM-Nick:" + strPost) 
     817                        Return "GetDirectMessage -> Err: Can't get Nick." 
     818                    End Try 
     819 
     820                    SyncLock LockObj 
     821                        If links.Contains(post.Id) Then Continue For 
     822                    End SyncLock 
     823 
     824                    'Get ImagePath 
     825                    Try 
     826                        pos1 = strPost.IndexOf(_parseImg, pos2, StringComparison.Ordinal) 
     827                        pos2 = strPost.IndexOf(_parseImgTo, pos1 + _parseImg.Length, StringComparison.Ordinal) 
     828                        post.ImageUrl = HttpUtility.HtmlDecode(strPost.Substring(pos1 + _parseImg.Length, pos2 - pos1 - _parseImg.Length)) 
     829                    Catch ex As Exception 
     830                        _signed = False 
     831                        TraceOut("DM-Img:" + strPost) 
     832                        Return "GetDirectMessage -> Err: Can't get ImagePath" 
     833                    End Try 
     834 
     835                    'Get Protect  
     836                    Try 
     837                        pos1 = strPost.IndexOf(_isProtect, pos2, StringComparison.Ordinal) 
     838                        If pos1 > -1 Then post.IsProtect = True 
     839                    Catch ex As Exception 
     840                        _signed = False 
     841                        TraceOut("DM-Protect:" + strPost) 
     842                        Return "GetDirectMessage -> Err: Can't get Protect" 
     843                    End Try 
     844 
     845                    Dim orgData As String = "" 
     846 
     847                    'Get Message 
     848                    Try 
     849                        pos1 = strPost.IndexOf(_parseDM1, pos2, StringComparison.Ordinal) 
     850                        If pos1 > -1 Then 
     851                            pos2 = strPost.IndexOf(_parseDM2, pos1, StringComparison.Ordinal) 
     852                            orgData = strPost.Substring(pos1 + _parseDM1.Length, pos2 - pos1 - _parseDM1.Length).Trim() 
     853                        Else 
     854                            pos1 = strPost.IndexOf(_parseDM11, pos2, StringComparison.Ordinal) 
     855                            pos2 = strPost.IndexOf(_parseDM2, pos1, StringComparison.Ordinal) 
     856                            orgData = strPost.Substring(pos1 + _parseDM11.Length, pos2 - pos1 - _parseDM11.Length).Trim() 
     857                        End If 
     858                        orgData = Regex.Replace(orgData, "<a href=""https://twitter\.com/" + post.Name + "/status/[0-9]+"">\.\.\.</a>$", "") 
     859                        orgData = orgData.Replace("&lt;3", "♡") 
     860                    Catch ex As Exception 
     861                        _signed = False 
     862                        TraceOut("DM-Body:" + strPost) 
     863                        Return "GetDirectMessage -> Err: Can't get body" 
     864                    End Try 
     865 
     866                    '短縮URL解決処理(orgData書き換え) 
     867                    orgData = ShortUrlResolve(orgData) 
     868 
     869                    '表示用にhtml整形 
     870                    post.OriginalData = AdjustHtml(orgData) 
     871 
     872                    '単純テキストの取り出し(リンクタグ除去) 
     873                    Try 
     874                        post.Data = GetPlainText(orgData) 
     875                    Catch ex As Exception 
     876                        _signed = False 
     877                        TraceOut("DM-Link:" + strPost) 
     878                        Return "GetDirectMessage -> Err: Can't parse links" 
     879                    End Try 
     880 
     881                    'Get Date 
     882                    Try 
     883                        pos1 = strPost.IndexOf(_parseDate, pos2, StringComparison.Ordinal) 
     884                        pos2 = strPost.IndexOf(_parseDateTo, pos1 + _parseDate.Length, StringComparison.Ordinal) 
     885                        post.PDate = DateTime.ParseExact(strPost.Substring(pos1 + _parseDate.Length, pos2 - pos1 - _parseDate.Length), "yyyy'-'MM'-'dd'T'HH':'mm':'sszzz", System.Globalization.DateTimeFormatInfo.InvariantInfo, Globalization.DateTimeStyles.None) 
     886                    Catch ex As Exception 
     887                        _signed = False 
     888                        TraceOut("DM-Date:" + strPost) 
     889                        Return "GetTimeline -> Err: Can't get date." 
     890                    End Try 
     891 
     892 
     893                    'Get Fav 
     894                    'pos1 = strPost.IndexOf(_parseStar, pos2) 
     895                    'pos2 = strPost.IndexOf("""", pos1 + _parseStar.Length) 
     896                    'If strPost.Substring(pos1 + _parseStar.Length, pos2 - pos1 - _parseStar.Length) = "empty" Then 
     897                    '    lItem.Fav = False 
     898                    'Else 
     899                    '    lItem.Fav = True 
     900                    'End If 
     901                    post.IsFav = False 
     902 
     903                    'Imageの取得 
     904                    arIdx += 1 
     905                    dlgt(arIdx) = New GetIconImageDelegate(AddressOf GetIconImage) 
     906                    ar(arIdx) = dlgt(arIdx).BeginInvoke(post, imgs, imgsS, Nothing, Nothing) 
     907 
     908                    If _endingFlag Then Return "" 
     909 
     910                    SyncLock LockObj 
     911                        links.Add(post.Id) 
     912                    End SyncLock 
     913 
     914                    '受信DMかの判定で使用 
     915                    If gType = WORKERTYPE.DirectMessegeRcv Then 
     916                        post.IsOwl = False 
     917                    Else 
     918                        post.IsOwl = True 
     919                    End If 
     920 
     921                    post.IsRead = read 
     922                    post.IsDm = True 
     923 
     924                    TabInformations.GetInstance.AddPost(post) 
     925                End If 
     926            Next 
     927 
     928            For i As Integer = 0 To arIdx 
     929                dlgt(i).EndInvoke(ar(i)) 
     930            Next 
     931 
    769932            Return "" 
    770         End If 
    771  
    772         Dim strSep() As String = {_splitDM} 
    773         Dim posts() As String = retMsg.Split(strSep, StringSplitOptions.RemoveEmptyEntries) 
    774         Dim intCnt As Integer = 0   'カウンタ 
    775         Dim listCnt As Integer = 0 
    776         SyncLock LockObj 
    777             listCnt = links.Count 
    778         End SyncLock 
    779         Dim dlgt(20) As GetIconImageDelegate 
    780         Dim ar(20) As IAsyncResult 
    781         Dim arIdx As Integer = -1 
    782  
    783         For Each strPost As String In posts 
    784             intCnt += 1 
    785  
    786             If intCnt > 1 Then  '1件目はヘッダなので無視 
    787                 'Dim lItem As New MyListItem 
    788                 Dim post As New PostClass() 
    789  
    790                 'Get ID 
    791                 Try 
    792                     pos1 = 0 
    793                     pos2 = strPost.IndexOf("""", 0, StringComparison.Ordinal) 
    794                     post.Id = Long.Parse(HttpUtility.HtmlDecode(strPost.Substring(0, pos2))) 
    795                 Catch ex As Exception 
    796                     _signed = False 
    797                     TraceOut("DM-ID:" + strPost) 
    798                     Return "GetDirectMessage -> Err: Can't get ID" 
    799                 End Try 
    800  
    801                 'Get Name 
    802                 Try 
    803                     pos1 = strPost.IndexOf(_parseName, pos2, StringComparison.Ordinal) 
    804                     pos2 = strPost.IndexOf(_parseNameTo, pos1, StringComparison.Ordinal) 
    805                     post.Name = HttpUtility.HtmlDecode(strPost.Substring(pos1 + _parseName.Length, pos2 - pos1 - _parseName.Length)) 
    806                 Catch ex As Exception 
    807                     _signed = False 
    808                     TraceOut("DM-Name:" + strPost) 
    809                     Return "GetDirectMessage -> Err: Can't get Name" 
    810                 End Try 
    811  
    812                 'Get Nick 
    813                 Try 
    814                     pos1 = strPost.IndexOf(_parseNick, pos2, StringComparison.Ordinal) 
    815                     pos2 = strPost.IndexOf(_parseNickTo, pos1 + _parseNick.Length, StringComparison.Ordinal) 
    816                     post.Nickname = HttpUtility.HtmlDecode(strPost.Substring(pos1 + _parseNick.Length, pos2 - pos1 - _parseNick.Length)) 
    817                 Catch ex As Exception 
    818                     _signed = False 
    819                     TraceOut("DM-Nick:" + strPost) 
    820                     Return "GetDirectMessage -> Err: Can't get Nick." 
    821                 End Try 
    822  
    823                 SyncLock LockObj 
    824                     If links.Contains(post.Id) Then Continue For 
    825                 End SyncLock 
    826  
    827                 'Get ImagePath 
    828                 Try 
    829                     pos1 = strPost.IndexOf(_parseImg, pos2, StringComparison.Ordinal) 
    830                     pos2 = strPost.IndexOf(_parseImgTo, pos1 + _parseImg.Length, StringComparison.Ordinal) 
    831                     post.ImageUrl = HttpUtility.HtmlDecode(strPost.Substring(pos1 + _parseImg.Length, pos2 - pos1 - _parseImg.Length)) 
    832                 Catch ex As Exception 
    833                     _signed = False 
    834                     TraceOut("DM-Img:" + strPost) 
    835                     Return "GetDirectMessage -> Err: Can't get ImagePath" 
    836                 End Try 
    837  
    838                 'Get Protect  
    839                 Try 
    840                     pos1 = strPost.IndexOf(_isProtect, pos2, StringComparison.Ordinal) 
    841                     If pos1 > -1 Then post.IsProtect = True 
    842                 Catch ex As Exception 
    843                     _signed = False 
    844                     TraceOut("DM-Protect:" + strPost) 
    845                     Return "GetDirectMessage -> Err: Can't get Protect" 
    846                 End Try 
    847  
    848                 Dim orgData As String = "" 
    849  
    850                 'Get Message 
    851                 Try 
    852                     pos1 = strPost.IndexOf(_parseDM1, pos2, StringComparison.Ordinal) 
    853                     If pos1 > -1 Then 
    854                         pos2 = strPost.IndexOf(_parseDM2, pos1, StringComparison.Ordinal) 
    855                         orgData = strPost.Substring(pos1 + _parseDM1.Length, pos2 - pos1 - _parseDM1.Length).Trim() 
    856                     Else 
    857                         pos1 = strPost.IndexOf(_parseDM11, pos2, StringComparison.Ordinal) 
    858                         pos2 = strPost.IndexOf(_parseDM2, pos1, StringComparison.Ordinal) 
    859                         orgData = strPost.Substring(pos1 + _parseDM11.Length, pos2 - pos1 - _parseDM11.Length).Trim() 
    860                     End If 
    861                     orgData = Regex.Replace(orgData, "<a href=""https://twitter\.com/" + post.Name + "/status/[0-9]+"">\.\.\.</a>$", "") 
    862                     orgData = orgData.Replace("&lt;3", "♡") 
    863                 Catch ex As Exception 
    864                     _signed = False 
    865                     TraceOut("DM-Body:" + strPost) 
    866                     Return "GetDirectMessage -> Err: Can't get body" 
    867                 End Try 
    868  
    869                 '短縮URL解決処理(orgData書き換え) 
    870                 orgData = ShortUrlResolve(orgData) 
    871  
    872                 '表示用にhtml整形 
    873                 post.OriginalData = AdjustHtml(orgData) 
    874  
    875                 '単純テキストの取り出し(リンクタグ除去) 
    876                 Try 
    877                     post.Data = GetPlainText(orgData) 
    878                 Catch ex As Exception 
    879                     _signed = False 
    880                     TraceOut("DM-Link:" + strPost) 
    881                     Return "GetDirectMessage -> Err: Can't parse links" 
    882                 End Try 
    883  
    884                 'Get Date 
    885                 Try 
    886                     pos1 = strPost.IndexOf(_parseDate, pos2, StringComparison.Ordinal) 
    887                     pos2 = strPost.IndexOf(_parseDateTo, pos1 + _parseDate.Length, StringComparison.Ordinal) 
    888                     post.PDate = DateTime.ParseExact(strPost.Substring(pos1 + _parseDate.Length, pos2 - pos1 - _parseDate.Length), "yyyy'-'MM'-'dd'T'HH':'mm':'sszzz", System.Globalization.DateTimeFormatInfo.InvariantInfo, Globalization.DateTimeStyles.None) 
    889                 Catch ex As Exception 
    890                     _signed = False 
    891                     TraceOut("DM-Date:" + strPost) 
    892                     Return "GetTimeline -> Err: Can't get date." 
    893                 End Try 
    894  
    895  
    896                 'Get Fav 
    897                 'pos1 = strPost.IndexOf(_parseStar, pos2) 
    898                 'pos2 = strPost.IndexOf("""", pos1 + _parseStar.Length) 
    899                 'If strPost.Substring(pos1 + _parseStar.Length, pos2 - pos1 - _parseStar.Length) = "empty" Then 
    900                 '    lItem.Fav = False 
    901                 'Else 
    902                 '    lItem.Fav = True 
    903                 'End If 
    904                 post.IsFav = False 
    905  
    906                 'Imageの取得 
    907                 arIdx += 1 
    908                 dlgt(arIdx) = New GetIconImageDelegate(AddressOf GetIconImage) 
    909                 ar(arIdx) = dlgt(arIdx).BeginInvoke(post, imgs, imgsS, Nothing, Nothing) 
    910  
    911                 If _endingFlag Then Return "" 
    912  
    913                 SyncLock LockObj 
    914                     links.Add(post.Id) 
    915                 End SyncLock 
    916  
    917                 '受信DMかの判定で使用 
    918                 If gType = WORKERTYPE.DirectMessegeRcv Then 
    919                     post.IsOwl = False 
    920                 Else 
    921                     post.IsOwl = True 
    922                 End If 
    923  
    924                 post.IsRead = read 
    925                 post.IsDm = True 
    926  
    927                 TabInformations.GetInstance.AddPost(post) 
    928             End If 
    929         Next 
    930  
    931         For i As Integer = 0 To arIdx 
    932             dlgt(i).EndInvoke(ar(i)) 
    933         Next 
    934  
    935         Return "" 
     933 
     934        Finally 
     935            GetTmSemaphore.Release() 
     936        End Try 
    936937    End Function 
    937938