WPF Q&A

timer UI문제 왕초보자 평점: 없음 조회: 276
안녕하세요.
WPF로 개발중에 사소한 문제가 하나 생겼는데요.
윈도우안에 콤보박스를 넣고, 콤보박스아이템 기입하고 드롭다운을 시키면 아이템 목록이 디스플레이 되잖아요?
그 상태에서 잠시뒤에 디스플레이가 사라져요...
또한 윈도우를 드래그하여 움직일 수 있게 해놓았는데 계속움직이고 있으면 잠시 뒤에 멈취요.

그래서 프로그램이 어느순간 잠깐 0.1초 정도 멈춘다고 제 나름대로 판단했는데요.
멈추는 시기가 안에 Dispatchertimer가 있는데 이게 루프를 돌고 괄호에서 빠져 나갈때 멈추는 것 같더라구요. 
중단점 걸어놓고 보니 딱 그 타이밍에 콤보박스 아이템이 디스플레이가 사라져요.

원래 Dispatchertimer가 있으면 잠깐 프로그램이 멈추나요?
어떻게 해야 해결 할 수 있을까요??
도와주세요...ㅠㅠ

+추가
딜레이를 어떤걸 쓰느냐도 문제가 있는 것 같아요.
현재 Dispatchertimer를 Begininvoke를 이용해서 쓰레드로 바꿨는데, 쓰레드를 인터벌을 두고 돌리고 싶어서 딜레이를 주는데 Task.Delay().Wait()와 Thread.Sleep()은 UI가 표시가 안되고, 따로 딜레이 함수를 만들어서 쓰는건 위에 질문과 같은 현상이 일어나네요..

밑에는 따로 만든 딜레이 입니다..
        //딜레이함수
        private void Delay(int MS)
        {
            DateTime ThisMoment = DateTime.Now;
            TimeSpan duration = new TimeSpan(0, 0, 0, 0, MS);
            DateTime AfterWards = ThisMoment.Add(duration);
            while (AfterWards >= ThisMoment)
            {
                DoEvents();
                ThisMoment = DateTime.Now;
            }          
        }

밑에는 딜레이 함수안에 DoEvents()함수입니다.
        private void DoEvents()
        {
            // Allow UI to Update...
            DispatcherFrame f = new DispatcherFrame();
            Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background,
 
             new Action<object>((arg) =>
             {
                 DispatcherFrame fr = arg as DispatcherFrame;
                 fr.Continue = false;
             }), f);
 
            Dispatcher.PushFrame(f);
        }

태그 : 멈춤 timer wpf
작성자 정보
왕초보자
Level 13
 [EXP.11/40]

메일:  비공개
글등록 +12 132 덧글등록 +3 21
자기소개
안녕하세요.
글 공유하기 |
  tweet facebook
2018-07-24 오전 11:26:54
나도한마디
사용자
롬메달            [2018-07-24]
Level 51
 [EXP.159/250]
Dispatchertimer 는 wpf 에서 돌아가는 timer인데 내부에 화면 갱신이나 다른 동작을 하는 코드가 있겠죠.
그래서 괄호 끝나는 부분에 화면 갱신되면서 열려있던 콤보박스가 닫히지 않았나 생각됩니다. 추측입니다. 코드를 못봤으니.

아래 코드는 제가 이해를 못하겠네요 무슨 동작을 하는건지는.... 쓰레드를 인터벌을 두고 돌리고 싶다고요?
사용자
왕초보자            [2018-07-24]
Level 13
 [EXP.11/40]
쓰레드를 While(true){}로 딜레이없이 돌리는게 아니고,
Whlie문안에 딜레이를 넣어서 1초간격,2초간격이런식으로 스레드를 돌린다는 말입니다.
private void thread()
{
Whlie(true)
{
Delay(1000);
//실행할코드
}
}
이런식으루요
태그로 엮인글
[C#.NET Q&A] wpf 공부 방법??  Tube
[WPF Q&A] 동시에 두화면에 NotifyPropertyChanged 시키려면 어떻게 해야하나요..?[2]  LustBJ
[WPF Q&A] WPF 메세지박스 띄웠다가 자동으로 꺼지는방법..[1]  bb
[WPF 자료실] WPF에서 마우스의 움직임이 시간동안 없을 경우 자동종료되는 프로그램 만드는법좀 가르쳐주세요[1] 파일첨부 bb
[WPF Q&A] ALT 키를 이용한 키조합 기능 구현하는데 궁금한 부분이 있습니다..  비가와요
[C#.NET Q&A] C# timer와 비동기 async문제해결 부탁드립니다. [2]  Line
[C#.NET Q&A] C# WPF 에서 PrintDialog.PrintVisual 인쇄 안되는 문제 문의  워너비포티
[WPF Q&A] WPF 에서 PrintDialog.PrintVisual 실행시 Label에 Name 속성을 지정 하면 출력이 안됩...  워너비포티
[WPF Q&A] Send 버튼 눌렀을 시 TextBlock 반영 방법[1]  WPFWTF
[WPF Q&A] Rectangle에 Fill 된 색 값을 알아 내는 방법은 없나요??[1]+1  존오비미켈
글리스트
책보고 처음 쓰레드 ( Thread ) 따라했는데, 값이 책과 다릅니다.[1]+1  insurang
스크린페인팅 프로그램을 만들고싶은데[1]+1  엿장수
파일다이얼로그 띄울때[1]+1  엿장수
smtp 메일서버 daum.net 보내 지나요?[1]+1  insurang
Listview에서 출력된 column 값 질문[2]+2  Sad7Dayz
blue 효과 적용 방법 문의 드립니다.[1]  hoon
Enum 을 Xaml 에서 사용하는 방법 궁금합니다.[3]  비가와요
버튼 사이즈를 NaN 으로 나오게 하는 방법 알려주세요.[1]  insurang
Blend 에 있는 컨트롤 VS로 가져올 수 있나요?[1]+1  insurang
메인창에서 자식창띄우고 자식창에서 OpenFileDialog 띄우는방법.[2]  왕초보자
 ★현재글->   timer UI문제[1]+1  왕초보자
스택패널 바깥을 누르면 스택패널 Visible 를 Visible.Collapsed 으로 변경하고 싶습니다.[2]+2  insurang
상대경로 구하기[1]  왕초보자
윈도우와 윈도우, 윈도우와 페이지, 페이지와 페이지간에 데이터 주고받기[4]+1  왕초보자
서브윈도우에서 메인윈도우의 컨트롤을 제어하고 싶습니다[1]  왕초보자
멀티쓰레드? 비동기? 로 새창을 열고싶습니다.[1]+2  왕초보자
새창에서 gif사용[1]  왕초보자
Grid 안에 위치한 TextBox 가 입력된 글자에 의해 Width 가 변합니다...[3]+2  비가와요
Grid에서 페이징처리 궁금한점이 있습니다.[2]+2  방랑이z
Thread 에서 UI변경 3번째....[2]+1  hoon
Thread 에서 UI변경 2번째....[2]+1  hoon