private static void UnretweetSink(IEnumerable <AccountInfo> infos, TweetViewModel status) { var ts = status.Status as TwitterStatus; if (ts == null) { NotifyStorage.Notify("DirectMessageはUnretweetできません。"); return; } if (ts.RetweetedOriginal != null) { status = TweetStorage.Get(ts.RetweetedOriginal.Id, true); } if (status == null) { NotifyStorage.Notify("Retweet オリジナルデータが見つかりません。"); return; } bool success = true; Parallel.ForEach(infos, d => { // リツイート状態更新 var ud = d.UserViewModel; if (ud != null) { status.RegisterRetweeted(ud); } try { unretweetInjection.Execute(new Tuple <AccountInfo, TweetViewModel>(d, status)); } catch (Exception ex) { if (ud != null) { status.RemoveRetweeted(ud); } success = false; NotifyStorage.Notify("Retweetキャンセルに失敗しました: @" + d.ScreenName); if (!(ex is ApplicationException)) { ExceptionStorage.Register(ex, ExceptionCategory.TwitterError, "Retweetキャンセル操作時にエラーが発生しました"); } } }); if (success) { NotifyStorage.Notify("Retweetをキャンセルしました: @" + status.Status.User.ScreenName + ": " + status.Status.Text); } }