نوشته شده توسط
the king
نه، دیگه DoWork رو مجددا صدا نمی زنید، قبلا صدا زده بودنیش که کپی شروع شده. همون true کردن متغیر pause_ به تنهایی باعث توقف روالی میشه که DoWork داره انجام میده. مادامی که pause_ ئه true هست روال متوقف میمونه. هر وقت به قصد resume متغیر ئه رو false کنید از همونجا که متوقف شده بود ادامه میده و باز نیازی به فراخوانی DoWork نیست.
private void Worker_DoWork(object sender, DoWorkEventArgs e)
{
var dest = Path.GetFullPath(txt_usercontrol.Text );
var list = new List<KeyValuePair<string, string>>();
foreach (var item in replacementList)
{
list.Add(new KeyValuePair<string, string>(item, dest));
}
for (var i = 0; i < list.Count; i++)
{
if (Directory.Exists(list[i].Key))
{
var destFolder = Path.Combine(list[i].Value, Path.GetFileName(list[i].Key));
if (Directory.Exists(destFolder) == false)
{
Directory.CreateDirectory(destFolder);
}
foreach (var file in Directory.GetFiles(list[i].Key))
{
list.Add(new KeyValuePair<string, string>(file, destFolder));
}
foreach (var folder in Directory.GetDirectories(list[i].Key))
{
list.Add(new KeyValuePair<string, string>(folder, destFolder));
}
}
else if (File.Exists(list[i].Key))
{
var destFile = Path.Combine(list[i].Value, Path.GetFileName(list[i].Key));
Copy(list[i].Key, destFile);
}
}
}
ببینید این do work هست اون کدی که شما فرمودین رو هر جایی که مینویسم اتفاقی رخ نمیده مشکل کجاست به نظر شما؟
private void btn_pause_Click(object sender, EventArgs e)
{
if (btn_pause.Text == "pause")
{
_pause = true;
btn_pause.Text = "resume";
}
else
{
_pause = false;
btn_pause.Text = "pause";
}
}
برام سواله do work چطوری میفهمه متغیر true شده