간단한 상태 업데이트와 경우에 따라 진행률 표시 줄에 대한 내 응용 프로그램의 하단에 StatusStrip을 사용하는 경향이 있습니다.ToolStripStatusLabel에 대한 크로스 스레드 호출은 어떻게합니까?
그러나 ToolStripStatusLabels는 .Invoke 또는 .InvokeRequired가 없으므로 컨트롤에서 상속하지 않는 것으로 보입니다. 그래서 어떻게 스레드 안전 텍스트 속성을 변경하려면 전화를 걸겠습니까? 검색 올
코딩 후손에 대한 답변 등 :
Action<string> test=(text) =>
{
if (this._statusStrip.InvokeRequired) this._statusStrip.Invoke(
new MethodInvoker(() => this._lblStatus.Text = text));
else this._lblStatus.Text = text;
};
또는
private void TestInvoker(string text)
{
if (this._statusStrip.InvokeRequired)
this._statusStrip.Invoke(
new MethodInvoker(() => this._lblStatus.Text = text));
else this._lblStatus.Text = text;
}
@Maslow : Control.Invoke 주위에 당신의 논리에주의하십시오.문서에있는 규칙은주의 깊게 읽지 않으면 미묘하고 오류가 발생하기 쉽습니다. Invoke를보다 적절하게 사용하려면 링크에있는 코드를 확인하십시오. 예를 들어, 구현시 'ToolStrip'핸들이 삭제되지 않았으며 'ToolStrip' 핸들이 생성되었는지 확인할 수 없습니다. –
핸들이 아직 생성되지 않은 것 외에, 어쨌든 예외가 발생하면 예외를 throw하는 것 외에는 아무 것도하지 않는 것처럼 보입니다. 맞습니까? 핸들이 아직 생성되지 않은 경우에는 아무 일도 없었던 것처럼 가장하고 예외를 throw하지 않는 것이 유용하지는 않습니다. – Maslow