[ Maki ^^ @ 13.07.2009. 19:28 ] @
Ne znam je li neko imao slican problem... Jezik je C#.

Imam metod koji se izvrsava donekle, a onda treba da ceka da korisnik unese podatke na glavnoj formi pre nego sto nastavi sa izvrsavanjem. Kako to izvesti?
[ Sapphire @ 14.07.2009. 00:27 ] @
Vjerovatno zavisi od više faktora...

Ti u biti želiš da se kod izvršava do jedne tačke, i onda "stane". Ako bi ovo uradio u programu na bilo koji način koji se trenutno mogu sjetiti, bilo bi prilično neefikasno, naopako i neelegantno urađeno. Npr, možeš postaviti neku bool varijablu, i if uslov u metodi koji prema uslovu grana posao na onaj prije interakcije i poslije; pa kad se prilikom interakcije odradi što želiš, pozoveš istu metodu sa prethodno postavljenom varijablom na true.

Ipak, logično gledajući, koji god da posao radiš - nema baš smisla da neka metoda ide do jedne tačke i stane, osim ako se ne radi o stvarno dugačkoj i vremenski zahtjevnoj metodi. U ovome slučaju, koristi niti. Metodu pozovi iz nove niti, te onda vrlo elegantno pomoću EventWaitHandle-ova možeš komunicirati između glavne UI niti i ove posebne niti u slučaju dodatne potrebne korisničke interakcije.

Pokušaj razdvojiti metodu na dvije, pa nakon interakcije pozovi drugu; a pri kraju prve zapamti sve potrebne podatke u varijable.
Možda, ako se radi o vrlo kratkoj i brzoj metodi, možeš i metodu pozvati nakon interakcije

Imaš mnogo rješenja za ovo...
[ DarkMan @ 14.07.2009. 13:14 ] @
Moras koristiti metode koje blokiraju izvrsavanje koda, kao sto je na primer metoda ShowDialog.
Code:

public bool NekaMetoda()
{
   // neki tvoj kod koji se izvrsava
  Form1 dialog = new Form1();
  if(dialog.ShowDialog() == DialogResult.OK) {
     // preuzmi podatke iz forme
     int value1 = dialog.Value1;
     dialog.Dispose();
     // nastavi obradu
     return true;
  }
  return false;
}
[ Maki ^^ @ 18.07.2009. 19:12 ] @
Hvala na odgovorima. Bilo je korisno videti koje su mi opcije na raspolaganju u ovakvim situacijama, iako mi vecina predlozenih resenja zbog ovoga ili onoga nije odgovarala.

Pravio sam aplikaciju koja nece biti deo konacne verzije programa i koja sluzi za testiranje nekog koda koji sam napravio pre toga. Snasao sam se na sledeci nacin:

Code:

public bool korisnik_uneo_podatke = false;
public bool NekaMetoda()
{
  // Deo pre interakcije korisnika
  do
  {
     Application.DoEvents();
  }
   while (!korisnik_uneo_podatke)

  // Deo posle interakcije korisnika
}