سلام
راستش الان نصفه شبه یا بهتره بگیم اول صبحه خستم حوصله خوندن کد هارو ندارم اما کاری که باید انجام بشه مشخصه شما اگه کدی رو که لینک های یک صفحه رو در میاره به صورت یه تابع در بیارین که ورودی لینک بگیره خروجی یک لیست از لینک ها تحویل بده یه همچین چیزی (با note pad نوشتم اگه اررور داد خودتون اصلاح کنید)
public List<string> GetAllLinksFromLink(string text1, string text2)
{
List<string> s = new List<string>();
s = showlinks(text1);
for (int i = 0; i <= s.Count - 1; i++)
{
if (s[i].ToString().Contains(".pdf") || s[i].ToString().Contains(".jpg") || s[i].ToString().Contains(".png") ||
s[i].ToString().Contains(".bmp") || s[i].ToString().Contains(".css") || s[i].ToString().Contains(".js") ||
s[i].ToString().Contains(".gif")|| s[i].ToString().Contains(".swf"))
s.RemoveAt(i);
else if (string.IsNullOrEmpty(s[i].ToString()) || !s[i].ToString().Contains(text2))
s.RemoveAt(i);
}
return s;
}
بعد کد برنامه رو اینطوری بنویسید:
List<string> main = new List<string>();
List<string> subTemp = new List<string>();
main = GetAllLinksFromLink(textBox1.Text,textBox2.Text);
int mainMax = main.Count;
for (int i = 0; i <= mainMax - 1; i++)
{
subTemp = GetAllLinksFromLink(main[i]);
main.AddRange(subTemp);
subTemp.Clear();
}
//hala age dorost bashe bayad hame link ha to list main bashe
اینطوری مقدار زیادی تو استفاده از منابعتون صرفه جویی میشه اما اگه تعداد لینکا زیاده اصولیش اینه که این عملیات توی یک thread دیگه انجام بشه تا برنامه هنگ نکنه