당신은 이미 용어를 사용? DLL이 실제 작업을 수행 할 수 있도록 전체 디자인을 다시 생각해 보겠습니다. 사용자에게 무엇을 할 것인지 물어 보는 것과 같은 다른 모든 작업은 사용자 인터페이스 프로젝트에서만 수행해야합니다.
DLL이 수행 할 작업을 문의하기 위해 호출 할 수있는 콜백을 만들 수 있지만 호출이 사용자 상호 작용을 제공한다고 가정해서는 안됩니다. 즉, DLL이 정보를 반환 할 때까지 을 알 필요가 없도록 디자인해야합니다. 정보 만 반환됩니다.
예 : DLL 중 하나에 A
폴더에서 B
폴더로 파일을 복사하는 기능이 있다고 가정합니다. 한 파일의 복사가 실패하면 사용자가 중단하거나 다른 모든 파일을 계속 진행할지 여부를 결정해야합니다. 이 같은 이벤트를 만들 수 있습니다
public class QueryContinueEventArgs : EventArgs
{
public QueryContinueEventArgs(string failedFile, Exeption failure)
{
FailedFile = failedFile;
Failure = failure;
Continue = false;
}
public string FailedFile { get; private set; }
public Exception Failure { get; private set; }
public Continue { get; set; }
}
public event EventHandler<QueryContinueEventArgs> QueryContinueAfterCopyFailure;
protected bool OnQueryContinueAfterCopyFailure(string fileName, Exception failure)
{
if (QueryContinueAfterCopyFailure != null)
{
QueryContinueEventArgs e = new QueryContinueEventArgs(fileName, failure);
QueryContinueAfterCopyFailure(this, e);
return e.Continue;
}
return false;
}
할당 된 이벤트 핸들러는 사용자 상호 작용을 제공하고 그에 따라 Continue
플래그를 설정할 수 있습니다.
글쎄, 네 말이 맞아. 나는 좀 더 구체적이어야한다고 생각한다. 나는 ignore/abort/retry와 같은 것을 물어볼 필요가있다. 그래서 당신은 무엇을 제안하겠습니까? 콜백? – user2834447
나는 나의 대답을 이미 편집했다. –
고마워요! 그게 내가 원하는 전부 야! – user2834447