2011-08-08 7 views
0

나는 winforms 응용 프로그램을 지원할 책임이 있으며 때로는 응용 프로그램이 올바르게 그려지지 않습니다. 때로는 숫자가 올라가는 부분이 회색 (기본값 인 컨트롤 색상)이지만 여전히 작동합니다. 다른 시간에는 특정 버튼이 올바르게 칠하지 않습니다.WinForms가 때때로 페인트하지 못하는 이유는 무엇입니까?

우리는 사용자 정의 페인팅 코드를 작성하지 않았으며 GDI +, nada는 작성하지 않았습니다. 따라서 AFAIK는 Windows에서 모든 것을 처리해야합니다.

문제는 티켓이 올바르게 렌더링되지 않은 앱의 일부 사진이 찍히고, 무엇이 잘못되었을 지 모르기 때문에 디버깅을 시작하는 방법을 모르겠다는 것입니다.

WinForms가 때때로 페인트 작업을하지 못하는 이유는 무엇입니까? 내가 바라는 부분이 있습니까?

+3

WinForms는 거의 통증을 느끼지 않습니다. – CodesInChaos

답변

4

Winforms에서 UI 및 논리는 일반적으로 SAME 스레드에서 실행됩니다.

데이터베이스를 쿼리하거나 파일을 읽는 등의 UI 스레드를 차단하면 눈에 띄지 않는 것보다 시간이 오래 걸리며 UI는 그 시간 동안 업데이트되지 않습니다.

또 다른 이유는 다른 스레드가 더 높은 우선 순위를 갖고 CPU에서 시간을 확보하기 때문에 스레드가 단순히 실행 시간을 얻지 못하는 것일 수 있습니다.

+0

이것은 단기적으로는 의미가 있지만 때로는 이러한 문제가 수십 분 정도 지속됩니다. –

+0

@Jonathan Beerhalter, 아직도, 나는 내 대답에 무엇을 넣었 는가? UI가 업데이트되지 않는 이유는 항상 있으며 이유는 공식적인 것입니다. 다른 모든 것들은 버그이며 나와 열거하기가 어렵습니다. –

+0

하지만 UI 스레드가 잠겨 있지 않고 UI의 특정 부분을 칠하지 않기 때문에 사용자가 말한 것은 작동하지 않습니다. 나는 UI 개발 팁이 아닌 왜 그런 일이 일어날 지 몇 가지 이유가 있기를 바랬다. –

0

Erno가 말한 것 외에도, 내가 작업하고있는 winforms 응용 프로그램 중 하나가 내 컨트롤에 공통적 인 일부 이미지의 투명도 색상을 사용했을 때 이상한 문제가 있다고 덧붙였습니다. 앱에서 이미지를 사용하고 있고 버튼이나 컨트롤에서 사용하는 투명도 색상을 설정 한 경우 이상한 일이 발생합니다.

관련 문제