다른 스레드에서 Form 메서드를 호출하려고합니다. 양식 클래스에서 내가 가진 :여러 인수로 호출하여 FormatException이 발생합니다.
delegate int ReplaceMessageCallback(string msg, int key);
public int ReplaceMessage(string msg, int key)
{
if (this.InvokeRequired)
{
ReplaceMessageCallback amc = new ReplaceMessageCallback(ReplaceMessage);
object[] o = new object[] { msg, key };
return (int)this.Invoke(amc, o);
}
bool found = false;
int rv;
lock (this)
{
if (key != 0)
{
found = RemoveMessage(key);
}
if (found)
{
rv = AddMessage(msg, key);
}
else
{
rv = AddMessage(msg);
}
}
MainForm.EventLogInstance.WriteEntry((found)
? EventLogEntryType.Information
: EventLogEntryType.Warning,
IntEventLogIdent.MessageFormReplace1,
String.Format("MessageForm::ReplaceMessage(({2},{0}) returns {1}.\n\n(The message {3} exist to be replaced.)",
key,
rv,
msg,
(found)
? "did"
: "did not"));
return rv;
}
내가 이것을 실행하면, 나는 예외 "(0부터) 지수"FormatException을가 처리되지 않은했다 "의 크기보다보다 크거나 같은 제로와 작아야를 얻을 수 인수 목록. " 호출에 대한 호출.
기본적으로이 동일한 코드 조각은 단일 매개 변수 만 사용하는 클래스 메서드에서 제대로 작동하므로 개체 배열에 문제가 있다고 가정합니다.하지만 무엇이 있는지 전혀 모릅니다.
'key' 변수를 사용하는 코드를 게시 할 수 있습니까? – keyboardP
글쎄. "Invoke"가 나머지 함수에서 오류를 따라 가려는 것이 결코 내게 발생하지 않았습니다. 그러나 그것이 오류가있는 곳입니다. fubar 인 이벤트 로그에 Format이 있습니다. 묻는 것에 대해 감사합니다. .. 그것은 나를 더 한층 보게했다. 문제 해결됨. – Walt
아무런 문제가 없다. 나는 그 오류가 주로'String.Format' 호출 (색인 생략)을 보았다. 그것을 수락 할 답변으로 수정 내용을 게시하십시오. – keyboardP