(18-08-17, 03:53 AM)سعود كتب :Timer1_Tickطيب اخي الكريمهل انت متاكد ان المؤقت يصلح ان يستخدم لمثل هذه الاجراءات؟هو يعد كل مدة تحددها ولا يلتفت لانتهاء اجراء معين لكي ينتقل لاخر.على كل حال لو يطلع احد ممن لديه خبرة ربما يعطيك حل افضل واسهل.الكود التالي (وحسب خبرتي البسيطة) يناسب ان تضعه بمسارThread مستقل اما Backgroundworker او بطريقة عادية.كود :
[align=center] Try[/align]
[align=center] For i As Integer = 0 To DataGridView1.RowCount[/align]
[align=center][/align]
[align=center] WebBrowser1.Navigate(DataGridView1.Rows(i).Cells(0).Value.ToString())[/align]
[align=center][/align]
[align=center] WebBrowser1.Document.GetElementById("u_0_0").InnerText = TextBox1.Text[/align]
[align=center] WebBrowser1.Document.GetElementById("view_post").InvokeMember("click")[/align]
[align=center][/align]
[align=center] Await Task.Delay(CInt(Fix(NumericUpDown1.Value)) * 1000)[/align]
[align=center] i = i + 1[/align]
[align=center] Next[/align]
[align=center] Catch ex As Exception[/align]
[align=center] 'Throw[/align]
[align=center] 'MsgBox("انتهت عملية النشر", MsgBoxStyle.Information, "لا تنسى الصلاة على النبى محمد")[/align]
[align=center] End Try[/align]
لو تجرب تطبيق فكرة العد بحلقة For ضمن مؤقت على اداة بسيطة مثل Listbox ربما تتفاجا بالنتيجة.حاولت اجرب وضع كلمة Async لاجراء المؤقت الذي لدي قلت لعله يغير من اسلوبه ولكنه لم يعمل.ربما هو السر الذي تبحث عنه جرب ماقلته لك وباذن الله ستنحل المشكلة.
هذا الكود بالسى شارب ويعمل تمام لكنه بالسيلينام يمكن تعرف الحل من خلاله
كود :
try
{
for (int i = 0; i < dataGridView1.RowCount; i++)
{
post.Navigate().GoToUrl(dataGridView1.Rows[i].Cells[0].Value.ToString());
title = post.Title;
IWebElement postes = post.FindElement(By.Id("u_0_0"));
IWebElement postbox = post.FindElement(By.Name("view_post"));
postes.SendKeys(textBox3.Text);
postbox.Click();
await Task.Delay((int)numericUpDown1.Value * 1000);
//await Task.Delay(1000);
}
}
catch (Exception)
{
throw;
}
