2017-03-15 49 views
0

因此,我有一个方法可以在datagridview上执行调用,并且对于运行它的第一个线程可以正常工作,但是当第二个线程尝试使用该方法时,下载部分仍然功能,但是调用语句中止时的第一线工作,并开始改变这两个我无法在多个线程上调用SQL命令C#

public void ByteTransferResume(int indexResume) 
{ 
    HttpWebRequest req; 
    HttpWebResponse resp; 
    req = (HttpWebRequest)HttpWebRequest.Create(FileLocationName); 
    req.AddRange((int)fileInfoDestination.Length); 
    resp = (HttpWebResponse)(req.GetResponse()); 
    long fileLength = resp.ContentLength; 
    FileLocationLength = fileLength; 
    using (Stream responseStream = resp.GetResponseStream()) 
    { 
     int iBufferSize = 1024; 
     iBufferSize *= 1000; 
     using (FileStream saveFileStream = new FileStream(FileDestination, FileMode.Append, FileAccess.Write, FileShare.ReadWrite)) 
     { 
      int iByteSize; 
      byte[] downBuffer = new byte[iBufferSize]; 

      while ((iByteSize = responseStream.Read(downBuffer, 0, downBuffer.Length)) > 0) 
      { 
       saveFileStream.Write(downBuffer, 0, iByteSize); 

       FileInfo fileInfoDestinations = new FileInfo(FileDestination); 

       FileDestinationLength = (int)fileInfoDestinations.Length; 

       double downloadProgress = ((double)FileDestinationLength/FileLocationLength) * 100; 

       // MessageBox.Show(downloadProgress.ToString()); 

       dgvDownloadInfo.Invoke(new dgvCommandDelegate(DGVCommand), new object[] { $"UPDATE Download_Info SET [Progress] = '{downloadProgress:F2}%' WHERE [File Name] = '{thread1[indexResume].Name}'" }); 

       //MessageBox.Show(thread1[indexResume].Name); 
       //MessageBox.Show(indexResume.ToString()); 
       // dgvDownloadInfo.Invoke(new dgvConnectionDelegate(DGVConnection)); 
       Thread.Sleep(10); 
      } 
     } 
    } 
} 
+0

你尝试添加锁()语句? – daniell89

+0

我不熟悉锁定语句? – foreveraphone

+0

您使用的是什么RDBMS? –

回答

0

也许这将帮助你:

public object _lock = new object(); 
public void ByteTransferResume(int indexResume) 
{ 
    lock (_lock) 
    { 
     HttpWebRequest req; 
     //rest of your method   
    } 
    } 
+0

它没有工作我害怕,谢谢无论如何,对不起,这是一个痛苦,即时通讯非常新,但我很感激所有人:)最终生病了! :) – foreveraphone