I과 같이 보이는 MATLAB GUI를 가지고 : MATLAB GUI imageMATLAB GUI는 drawnow를 사용하여 일시 정지에도 불구하고 전화를 끊은
내가 달성하기 위해 시도하고 MATLAB은 일시 정지를 제외하고 지속적으로 자정 검사 유지하는 것이있을 때 사용자가 인터페이스를 변경합니다. 따라서 자정인지 계속 확인해야하므로 백그라운드에서 while 루프를 계속 실행하고 있습니다. 그렇다면 몇 가지 기능을 수행합니다. 이 while 루프를 포함하는 함수는 사용자 입력 변경이 감지 된 후에 호출됩니다. 즉, 팝업 메뉴, 누름 단추 식, 텍스트 상자 등의 모든 콜백 함수의 끝에서 호출됩니다.이 때문에 while 루프에 drawnow가있는 이유가 있습니다. 따라서 사용자가 변경하고 일부 계산을 실행하려는 경우 해당 값이 감지됩니다. 계산이 끝나면이 while 루프가있는 함수를 다시 호출합니다.
내 while 루프에서 drawnow 및 pause를 사용하더라도 때때로 MATLAB이 여전히 멈추고 GUI가 응답하지 않아 사용자 입력을 인식하지 못하는 문제가 있습니다.
while 1
pause(0.1);
drawnow;
pause(0.1);
current_time=clock;
if current_time(4)==0
post_mortem;
end
end
내가 그것을 그러나 지금 내 문제가 아니라고, 심야 시간에 지속적으로 post_mortem 호출로 위의 코드는 효율적이지 알고 : 여기에 내 코드의 while 루프 부분입니다. 내 문제는 예를 들어 정오에도 때때로 내게 끊깁니다. 아무도 이것에 대한 해결책이 있습니까? 이전의 비슷한 질문에 대한 답변을 검색 할 때 솔루션은 drawnow 및 일시 중지를 사용하는 것으로 보였지만 그 방법은 저에게 효과적이지 않은 것으로 보입니다.
모든 안내를 받으실 수 있습니다. MATLAB은 멀티 스레드 다른 기능의 차단의 모든 종류를 일으킬 것입니다 지속적으로 (예 : 시간과 같은) 뭔가를 확인하는 while
루프를 사용하지 않기 때문에
'while'루프 대신 'timer'를 사용해 보셨습니까? 당신은 그런만큼 좋은 성능을 많이 얻는 것과 같아요. – Suever