Ve vašem SqlCommand
příkazy můžete spouštět asynchronně pomocí BeginExecuteNonQuery
a EndExecuteNonQuery
. Ten se zablokuje, dokud nebude hotový. To však nebude hlásit postup ze serveru o tom, jak zálohování probíhá - použil bych pro to pruh průběhu.
Chcete-li se vyhnout EndExecuteNonQuery
z blokování vašeho uživatelského rozhraní (v závislosti na tom, jak s ním zacházíte), budete potřebovat vlákno na pozadí. Pokud toto použijete, můžete také nepoužívat BeginXXX
EndXXX
a provádějte to synchronně ve vláknu na pozadí - BackgroundWorker
je pro to nejlepší.
Chcete-li se vyhnout použití vlákna na pozadí v uživatelském rozhraní, místo blokování na EndXXX
budete muset zaregistrovat zpětné volání a zpracovat výslednou událost (volání EndXXX
v této obsluze události, ale okamžitě se vrátí).
Aktualizace: podle komentáře, pro asynchronní volání do SQL příkazu/připojovacích věcí musíte v připojovacím řetězci uvést tolik:
http://www.connectionstrings.com/sql-server-2008
Server=myServerAddress; Database=myDataBase; Integrated Security=True; Asynchronous Processing=True;
Nebo v kódu pomocí nástroje pro tvorbu připojovacích řetězců:
builder.AsynchronousProcessing = true;