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 に答える