하아찡

[C#/WPF/수정] Upbit프로젝트 Balance 타이머 추가 본문

C#/코인프로그램 - 코드

[C#/WPF/수정] Upbit프로젝트 Balance 타이머 추가

하아찡 2023. 12. 8. 19:41

타 기기에서 주문이 들어왔을 경우 데이터를 처리하지 못하는 문제가 발생해서 일정시간(1초)간격으로 주문이 들어왔는지를 체크함.

 

 

BalanceViewModel.cs

 /// <summary>
 /// 오더가 들어왔는지 1초마다 체크해줌.
 /// 다른 기기에서 오더를했을때 들어오지 않는 문제해결을 위해.
 /// 23.12.08
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void EventOrerCheck(object sender,ElapsedEventArgs e)
 {
     Dictionary<string,double> data = new Dictionary<string,double>();
     List<Structs.Accounts> list = Task.Run(() => FAccount.AccountsAsync()).Result;
     Structs.Accounts mykrw = new Structs.Accounts();
     bool _b = false;
     foreach(var item in list)
     {
         if(item.Currency == "KRW")
         {
             mykrw = item;
             list.Remove(item);
             break;
         }
     }
     foreach (var item in Accounts)
     {
         data.Add(item.Market,Convert.ToDouble(item.Locked));
     }
     try
     {
         foreach (var item in list)
         {
             double val = data[item.Market];
             if (val != Convert.ToDouble(item.Locked))
             {
                 _b = true;
                 break;
             }
         }
         if(Convert.ToDouble(MyAccount.Locked) != Convert.ToDouble(mykrw.Locked))
             _b = true;

         if (_b)
         {
             //내 잔고 갱신 이거 처리안해주면 계속 이벤트보냄
             DispatcherService.Invoke(() =>
             {
                 _ea.GetEvent<MessageCoinOrderChangeEvent>().Publish();
                 RefreshAccount();
             });
             
         }
     }
     catch(Exception ex ) 
     {
         Debug.WriteLine($"BalaceView {ex.Message}");
     }
     
 }

 

해당 추가내용은 추후 Chart 매수 매도 라인을 출력 할 때 사용 계획입니다.

반응형