Anulowanie workera z 2giego forma

0

Witam,
Znalazłem na necie obsługę backround workera (Jakiś przykład).
Mam tylko pewien problem,
Chciałbym móc go anulować z poziomu drugiego okna.

W 2gim formie zrobiłem sobie button i po kliknięciu w buttona wywoływana jest taka funkcja:

 Form1 form = new Form1();
            form.kanzel();

Jednakże nie anuluje się background worker..
Co robię nie tak?
W załączniku przesyłam projekcik...

0

Proste, forma jest klasą a w "Form2" tworzysz nową instancję "Form1", nie korzystasz ze starej.

czyli metoda "kanzel" wykonuje się dla nowego okna.

0
public static class FormTransfer
{
    public static Form1 Form1 { get; set; } 
}

w Form1:

public void kanzel()
        {
            m_oWorker.CancelAsync();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            Transform.Form1 = this;
        }

w Form2:

Form1 form;

        private void Form2_Load(object sender, EventArgs e)
        {
            form = Transform.Form1;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            form.kanzel();
        }
3

Bez większych zmian.
Form1:

private void btnStartAsyncOperation_Click(object sender, EventArgs e)
{
   var fm2 = new Form2(this);
   fm2.Show();
   // coś tam dalej...
}

Form2:

public partial class Form2 : Form
{
   private readonly Form1 _form1;

   public Form2()
   {
      InitializeComponent();
   }
   public Form2(Form1 form1)
      : this()
   {
      _form1 = form1;
   }
   private void button1_Click(object sender, EventArgs e)
   {
      _form1.kanzel();
   }
}
0

dzięki ;-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1