다소 고의적 인 것처럼 보일지 모르지만, 저는 머리를 긁적 거리고 있습니다.BackgroundWorker 이벤트가 실행되지 않는다고 혼동했습니다.
좋아요, 저는 WindowsForm을 인스턴스화하고 양식에 DoSomeWork()라는 메서드를 호출하는 콘솔 응용 프로그램이 있습니다.
class Program
{
static void Main(string[] args)
{
Form1 form = new Form1();
form.DoSomeWork();
}
}
Form1이 ...이 같은
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public void DoSomeWork()
{
OuterClass outerClass = new OuterClass();
outerClass.DoSomeWork();
}
}
외부 클래스는, 차례로, 다음과 같습니다 ...
public class OuterClass
{
public void DoSomeWork()
{
InnerClass innerClass = new InnerClass();
innerClass.DoSomeWork();
}
}
보이는 그리고 마지막으로 InnerClass는 ...
다음과 같습니다public class InnerClass
{
private BackgroundWorker _backgroundWorker = new BackgroundWorker();
public InnerClass()
{
_backgroundWorker.WorkerReportsProgress = true;
_backgroundWorker.DoWork += new DoWorkEventHandler(BackgroundWorker_DoWork);
_backgroundWorker.ProgressChanged += new ProgressChangedEventHandler(BackgroundWorker_ProgressChanged);
}
void BackgroundWorker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
int i = 0; //I've placed a break point here. But it's never hit
}
void BackgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
worker.ReportProgress(42);
}
public void DoSomeWork()
{
_backgroundWorker.RunWorkerAsync();
}
}
알 수없는 이유로 (나에게) B InnerClass의 acgroundWorker가 ProgressChanged 이벤트를 발생시키지 않습니다. 나는 수업 프로그램에
OuterClass outerClass = new OuterClass()
와
Form1 form = new Form1();
를 교체하는 경우, 그것을 잘 작동합니다. 그런데 왜 양식을 통해 동일한 방법을 호출 할 때 내 이벤트가 실행되지 않습니까?
감사합니다.
EDIT : ProgressChanged 이벤트 처리기를 NotImplementedException을 던진 상태로 두어 사람을 던지고있는 것처럼 보였으므로 명확히하기 위해 제거했습니다.
예, 마침내 :) 감사합니다. 그것이 문제였습니다. 매우 감사! – Senkwe