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);
}
}
}
}
你尝试添加锁()语句? – daniell89
我不熟悉锁定语句? – foreveraphone
您使用的是什么RDBMS? –