SRNicoNico.ViewModels.MainWindowViewModel.Initialize C# (CSharp) Method

Initialize() public method

public Initialize ( ) : void
return void
        public void Initialize()
        {
            //Modelsを初期化
            Task.Run(async () => {

                if(File.Exists(NicoNicoUtil.CurrentDirectory + @"\session")) {

                    StatusBar.Status = "自動ログイン中";

                    //セッション情報を取得する
                    var reader = new StreamReader(NicoNicoUtil.CurrentDirectory + @"\session");

                    var key = reader.ReadLine().Split(':')[1];
                    var expire = DateTimeOffset.Parse(reader.ReadLine().Replace("Expire:", ""));

                    reader.Close();

                    //セッションが有効か比較する
                    if(DateTimeOffset.Compare(expire, DateTimeOffset.Now) < 0) {

                        //セッションが有効期限切れ
                        SignIn.StateText = "有効期限が切れています。\n再度ログインしてください。";
                        SignIn.AutoLogin = true;
                        NicoNicoWrapperMain.Instance = new NicoNicoWrapperMain(new NicoNicoSession());

                        //ログインダイアログ表示
                        Messenger.Raise(new TransitionMessage(typeof(SignInDialog), SignIn, TransitionMode.Modal));
                        return;
                    }

                    //セッションが有効だった場合
                    NicoNicoWrapperMain.Instance = new NicoNicoWrapperMain(new NicoNicoSession(key, expire));
                    if(await NicoNicoWrapperMain.Session.SignInInternalAsync() != SigninStatus.Success) {

                        //ログイン失敗
                        SignIn.StateText = "ログインに失敗しました。";
                        SignIn.AutoLogin = true;

                        //ログインダイアログ表示
                        Messenger.Raise(new TransitionMessage(typeof(SignInDialog), SignIn, TransitionMode.Modal));
                        return;
                    }

                    //セッション情報を更新
                    var writer = new StreamWriter(NicoNicoUtil.CurrentDirectory + @"\session");

                    writer.WriteLine("Key:" + NicoNicoWrapperMain.Session.Key);
                    writer.WriteLine("Expire:" + NicoNicoWrapperMain.Session.Expire);

                    writer.Flush();
                    writer.Close();
                    //ログイン成功
                    StatusBar.Status = "ログイン完了";
                    //手動ログイン
                } else {
                    //セッションを確立
                    NicoNicoWrapperMain.Instance = new NicoNicoWrapperMain(new NicoNicoSession());
                    Messenger.Raise(new TransitionMessage(typeof(SignInDialog), SignIn, TransitionMode.Modal));
                    return;
                }
            });
        }