我正在尝试优化我创建的备份程序。代码很草率,因为它是我的第一个如此规模的程序,但希望你可以看看它。
这个程序运行正常,但似乎需要的时间比需要的时间长。所以我正在使用Parallel.ForEach来帮助优化压缩过程。
现在,我让程序以下列方式执行压缩任务
Dim Destin = JobNode.SelectNodes("Destination")
For Each item As System.Xml.XmlNode In Destin
Dim time As DateTime = DateTime.Now
Dim format As String = "MMMddyyyy"
Dim zpath As String = item.InnerText
'replaces [date] in destination with actual Date
If time.DayOfWeek = 1 Then
time = time.AddDays(-1)
item.InnerText = Replace(item.InnerText, "[date]", time.ToString(format) & "_WE")
zpath = item.InnerText
zip.ParallelDeflateThreshold = -1
zip.Save(zpath)
Else
Dim time1 As DateTime = DateTime.Now.AddDays(-1)
item.InnerText = Replace(item.InnerText, "[date]", time1.ToString(format))
zpath = item.InnerText
zip.ParallelDeflateThreshold = -1
zip.Save(zpath)
End If
Next
我将所有源位置和目标位置保存到xml文件中以供阅读。每个循环的这个工作正是我想要的。但是,我无法将每个循环转换为Parallel.ForEach循环。
任何帮助都会很好。再说一次,在编程方面,我仍然是绿色的,所以对我来说是愚蠢的。
是的...我已经浏览了互联网寻求帮助,但它要么让我困惑,要么在我的环境中不起作用,要么我无法使用我的代码。
答案 0 :(得分:0)
试试这个:
Dim Destin = JobNode.SelectNodes("Destination").OfType(Of XmlNode)
Dim format As String = "MMMddyyyy"
Parallel.ForEach(Destin,
Sub(item)
Dim time As DateTime = DateTime.Now.AddDays(-1)
Dim zpath As String = item.InnerText
'replaces [date] in destination with actual Date
Dim timeString = If(time.DayOfWeek = 1, time.ToString(format) & "_WE", time.ToString(format))
item.InnerText = Replace(item.InnerText, "[date]", timeString)
zpath = item.InnerText
zip.ParallelDeflateThreshold = -1
zip.Save(zpath)
End Sub)