2014-01-30 17 views
0

即時嘗試獲取我在richtextbox中的直接鏈接的大小。在richtextbox中存在20或30個links.my代碼適用於一個鏈接。我如何獲取richtextbox中存在的所有鏈接的大小?這是我的代碼:如何獲取RichTextBox或文本框中所有鏈接的大小

private void button1_Click(object sender, EventArgs e) 
{ 
    HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(richTextBox1.Text); 
    hwr.Method = "HEAD"; 
    HttpWebResponse res = (HttpWebResponse)hwr.GetResponse(); 
    long len = res.ContentLength; 
    long a = len/1024; 
    long b = a/1024; 
    MessageBox.Show(b.ToString() + " MB"); 
} 
+0

按尺寸,你的意思是計數? – crush

+0

我只是想舉個例子,我有一個移動鏈接,它有700mb size.now我有多個鏈接richtextbox.how我得到所有鏈接的大小? – master

+1

什麼是*移動鏈接*?爲什麼鏈接700MB的大小? – crush

回答

0

我的建議取決於你如何richTextBox.Text樣子,但如果它有一個定義的分隔符 - 下面的代碼應工作 - 它會分裂你的文本行,然後將執行你的在每一行要求:

private void button1_Click(object sender, EventArgs e) 
{ 
    string[] movies = richTextBox1.Text.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None); 
    foreach (string item in movies) 
    { 
     item.Trim(); 
     HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(item); 
     hwr.Method = "HEAD"; 
     HttpWebResponse res = (HttpWebResponse)hwr.GetResponse(); 
     long len = res.ContentLength; 
     long a =len/1024; 
     long b = a/1024; 
     MessageBox.Show(b.ToString()+" MB"); 
    } 
} 

編輯 - 我覺得代碼將更好地工作,如果它是異步的,也可以是這樣的:

List<long> Length = new List<long>(); 
    List<string> Movies = new List<string>(); 

    private async void button1_Click(object sender, EventArgs e) 
    { 
     await getLength(Regex.Split(richTextBox1.Text, "\r\n|\r|\n")); 
     string text = ""; 
     for (int i = 0; i < Movies.Count; i++) 
      text += Movies[i] + " Length: " + Length[i].ToString() + "\n"; 
     MessageBox.Show(text); 
    } 

    private async Task getLength(string[] movies) 
    { 
     Task[] tasks = new Task[movies.Length]; 
     for (int i = 0; i < movies.Length; i++) 
     { 
      Movies.Add(movies[i].Trim()); 
      Length.Add(0); 
      tasks[i] = getOnesLength(i); 
     } 
     await Task.WhenAll(tasks); 
    } 

    private async Task getOnesLength(int index) 
    { 
     HttpWebRequest hwr = (HttpWebRequest)WebRequest.Create(Movies[index]); 
     hwr.Method = "HEAD"; 
     HttpWebResponse res = (HttpWebResponse) await hwr.GetResponseAsync(); 
     long len = res.ContentLength; 
     long a = len/1024; 
     long b = a/1024; 
     Length[index] = b; 
    } 

在這種情況下,您的UI不應該被阻止,並且在獲取所有鏈接的信息完成時您應該看到一個MessageBox。當然,這段代碼沒有異常處理等,但它可能是一個好的開始。

+0

此代碼不適用於我 – master

+0

@master您的richTextBox.Text如何看起來像?鏈接之間是否有分隔符? – Romasz

+0

它看起來像這樣http://up98.ir/uploads/139111291407551.jpg – master

相關問題