私のクエリは、クエリを何度も通過するたびに失速しているようです。
status_text.Text = "Check existing records...";
status_text.Refresh();
using (StreamReader reader = new StreamReader(df_text_filename))
{
using (StreamWriter writer = new StreamWriter(df_text_filename + "_temp"))
{
while ((product = reader.ReadLine()) != null)
{
if (product != _aff_svc.DFHeaderProd)
{
df_product = _product_factory.GetProductData(_vsi, product);
}
status_text.Text = "Checking for existing record of vendor record ID " + df_product.SKU;
status_text.Refresh();
if (_pctlr.GetBySKU(df_product.SKU) != null)
{
continue;
}
writer.WriteLine(product);
Application.DoEvents();
}
writer.Close();
}
reader.Close();
}
System.IO.File.Delete(df_text_filename);
System.IO.File.Move(df_text_filename + "_temp", df_text_filename);
コードは、GetBySKU を約 10 回すばやく実行し、約 1 秒ほど一時停止してから、すぐに別の 10 レコードを実行します。これは、この特定のクエリだけでなく、プロセス全体で発生します。
また、Application.DoEvents() が発生しているかどうかに関係なく発生します。
もう 1 つの問題は、一貫性がないことです。私はこのように数時間作業することができますが、突然、意図したとおりにループを通過します (期待されます)。
私の SQL サーバーは、プログラムと同じマシンで実行されています。
この動作を軽減するためにサーバー専用のリソースを調べましたが、何も見つかりませんでした。