BackgroundWorker 개체를 사용하면 단일 인수를 DoWorkEventHandler에 전달할 수 있습니다.둘 이상의 인수를 허용하는 BackgroundWorker 대신 사용할 수 있습니까?
// setup/init:
BackgroundWorker endCallWorker = new BackgroundWorker();
endCallWorker.DoWork += new DoWorkEventHandler(EndCallWorker_DoWork);
...
endCallWorker.RunWorkerAsync(userName);
// the handler:
private void EndCallWorker_DoWork(object sender, DoWorkEventArgs e)
{
string userName = e.Argument as string;
...
}
내가이 가난한 문자열 배열과 같은 객체에서 그들을 포장해야하며, 여러 인수를 전달하려면 :
// setup/init:
BackgroundWorker startCallWorker = new BackgroundWorker();
startCallWorker.DoWork += new DoWorkEventHandler(StartCallWorker_DoWork);
...
startCallWorker.RunWorkerAsync(new string[]{userName, targetNumber});
// the handler:
private void StartCallWorker_DoWork(object sender, DoWorkEventArgs e)
{
string[] args = e.Argument as string[];
string userName = args[0];
string targetNumber = args[1];
}
우리가 잘, 또는 이상적으로 여러 인수를 전달할 수 있도록 다른 객체 또는 패턴이 있는가, 우리 서명을 써요?
를 보유하는 클래스를 만드시겠습니까? (특히 "(s, e)"... 왜 선언 되었습니까?) –
저는 이것을 많이 좋아합니다. - 유스 케이스의 경우 훌륭하게 작동하지만 더 복잡한 응용 프로그램에 문제가있을 수 있습니다. 즉 매개 변수에 액세스해야합니다. 값 (username 및 targetNumber)은 setup/init에서 확인하십시오. –
도움이되기를 기쁘게 생각합니다 (그리고 더 많은 텍스트). –