Czekanie aż się wykona się metoda...

0

Witam, interesuje mnie możliwość powiedzenia "poczekaj aż się coś skończy"

Mianowicie, weźmy sobie przykład używania poleceń sql w pętli do dodawania do bazy (niedosłownie), np.

for (int i=0; i<100; i++)
{
dodaj(i, "andrzej");
/// czekaj aż skonczy się dodaj();
}

public void dodaj(int id, string imie)
{
SqlCommand("INSERT INTO table_name VALUES "+ id +","+" "+imie);
/// czekaj aż się wykona SqlCommand

}

Czyli, w dodaj(), po komendzie musi odczekać aż kwerenda się wykona, a nie od razu po "użyciu" komendy skakać dalej, a for ma czekać na całe dodaj(), chociaż chyba sama "pauza" na wykonanie się kwerendy raczej wystarczy

Widziałem różne przykłady z taskami/actionami, lecz może są jakieś prostsze sposoby.

Z góry dzięki

1

W takim najprostszym przypadku(jak nie używasz wielowątkowości, ani asynchroniczności) to program wykonuje się sekwencyjnie.
Nie musisz tutaj robić żadnego czekania. W pętli do kolejnej instrukcji przejdziesz dopiero jak metoda dodaj się zakończy.

0
some_ONE napisał(a):

W takim najprostszym przypadku(jak nie używasz wielowątkowości, ani asynchroniczności) to program wykonuje się sekwencyjnie.
Nie musisz tutaj robić żadnego czekania. W pętli do kolejnej instrukcji przejdziesz dopiero jak metoda dodaj się zakończy.

Czyli mam rozumieć, że program/język sam ogarnia kiedy zakończy się wysyłanie zapytania, nawet jeżeli by trwało więcej niż pojedyncze ms?

0

Tak.

2

Nie można udzielić rzetelnej odpowiedzi dopóty, dopóki nie poznamy ciała metody SqlCommand - może ona uruchamiać zapytanie sekwencyjnie (w wątku aplikacji, czyli program poczeka, aż zapytanie się wykona) bądź w odrębnym wątku, w przypadku to którym trzeba będzie poszukać innej metody do wykonywania zapytań, która się nada bardziej :P

0

Innymi słowy, sprawdź w dokumentacji, jak ta metoda jest zaimplementowana albo wykonaj za jej pomocą długą procedurę składowaną, żeby przekonać się empirycznie. Chociaż wg mnie powinna właśnie wykonywać się synchronicznie, bo takie jest oczekiwanie. A tak przy okazji to takie inserty umieszczaj w sesji. Wtedy wykonają się szybciej. Tzn. cała pętla ma być w sesji, a nie poszczególne inserty ;)

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