C#에서 Windows Form 응용 프로그램을 가지고 있는데 main()에서 루프 while 루프와 동등한 CLI 응용 프로그램을 구현할 위치를 파악하려고합니다. 저는 Visual C#의 GUI 디자이너를 사용하고 있습니다.Windows GUI 메인 루프 C#에서는 ... 어디 있습니까?
편집 : Timer 인스턴스로 문제가 해결되었습니다.
C#에서 Windows Form 응용 프로그램을 가지고 있는데 main()에서 루프 while 루프와 동등한 CLI 응용 프로그램을 구현할 위치를 파악하려고합니다. 저는 Visual C#의 GUI 디자이너를 사용하고 있습니다.Windows GUI 메인 루프 C#에서는 ... 어디 있습니까?
편집 : Timer 인스턴스로 문제가 해결되었습니다.
Application.Run
방법 안에 있습니다.
// MyForm is derived from `System.Windows.Forms.Form` class
Application.Run(new MyForm());
GetMessage API 정보가 어디서 들어 왔는지 확실하지 않습니다 ... –
sheepsimulator : 무엇을 의미합니까? Application.Run은 메시지 루프를 설정합니다. 내부적으로, 그것은 루프에서'GetMessage' Win32 API 함수를 호출합니다. –
하지만 어떻게 프로그램 로직을 추가 할 수 있습니까? 예를 들어, 프로그램이 계속해서 "It works!" 위젯으로 (텍스트를 추가하면 알아 낸 것입니다. widget.Text + = "It works!";). – Orm
그것은 Application.Run(Form)
에서 입력 : 당신이 직접 GetMessage
API 함수를 호출하지 않아야합니다. 그 루프에 어떤 논리도 입력하지 마십시오. 입력에 응답해야하는 경우 특정 이벤트에 대한 이벤트 처리기를 양식의 컨트롤에 추가하십시오. 논리를 주기적으로 실행해야하는 경우 Timer
클래스 중 하나를 사용하십시오.
C++의 메시지 펌프 논리의 주요 결과는 랩톱에서 배터리를 과도하게/불필요하게 사용하는 것입니다. 목표 목표를 달성하기위한 실제 코드 요구 사항을 다시 생각해 봐야하며 스핀 루프에 지속적으로 실행되는 로직을 포함하지 않아야합니다.
this을 읽어보십시오. 언어는 너무 명확하지 않으며 코드는 VB이지만 포인트를 얻어야합니다.
나는 당신이 틀린 수준에서 이것을 생각하고 있다고 생각합니다. 또한 "C# 프로그램의 어느 부분에서"일부 폴리곤에 대한 데이터가 일부 버스를 통해 GPU로 이동되는지 묻는 것이 좋습니다. 이러한 아이디어는 C# 언어의 개념이 아니라 라이브러리, 언어 및 런타임 추상화와 같은 구현 세부 사항입니다. C#의 Windows 폼의 요점은 메시지 루프에 대해 다시 생각할 필요가 없다는 것입니다. 예, 이벤트 중심 프로그램은 Windows 메시지로 만들어집니다. 간혹 추상화가 누출되지만 대부분의 일반적인 경우 메시지 수준에서 직접 이야기 할 필요는 없습니다. –
@Orm : 당신이 링크 한 예제는 매우 잘못 작성된 코드입니다. 당신이 그것을 사용한다면, 나는 그것을 피해야 할 것에 대한 참고 자료로 사용할 것을 권합니다. –
나는 그렇다. 그리고 이것은 이것을하는 쓰레기 방법이다. 나는 노력했고, 전혀 작동하지 않았다. – Orm