0

我正在尝试优化我创建的备份程序。代码很草率,因为它是我的第一个如此规模的程序,但希望你能超越它。

该程序运行良好,但似乎花费的时间比必要的要长。所以我正在玩弄 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 文件中以供阅读。这对于每个循环都按我想要的方式工作。但是,我无法将此 For each 循环转换为 Parallel.ForEach 循环。

你能帮忙的话,我会很高兴。再说一次,在编程方面我仍然很年轻,所以对我来说是愚蠢的。

是的......我在互联网上寻求帮助,但它要么让我感到困惑,要么在我的上下文中不起作用,要么我无法让它与我的代码一起使用。

4

1 回答 1

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)
于 2013-02-14T20:52:19.660 回答