Если я понимаю Ваше право требования, Вы могли бы сделать что-то вроде этого (код, не протестированный, но показывает общее представление):
private BackgroundWorker worker = new BackgroundWorker();
private AutoResetEvent _resetEvent = new AutoResetEvent(false);
public Form1()
{
InitializeComponent();
worker.DoWork += worker_DoWork;
}
public void Cancel()
{
worker.CancelAsync();
_resetEvent.WaitOne(); // will block until _resetEvent.Set() call made
}
void worker_DoWork(object sender, DoWorkEventArgs e)
{
while(!e.Cancel)
{
// do something
}
_resetEvent.Set(); // signal that worker is done
}
ForeignKey позволяет Вам, получают подклассы, это определение другого класса, но OneToOneFields не может сделать этого, и это не является присоединяемым к нескольким переменным