VB.net后台工作程序的保存和加载进度

VB.net后台工作程序的保存和加载进度,vb.net,backgroundworker,Vb.net,Backgroundworker,当我关闭或打开程序时,是否有办法保存和加载backgroundworker进度 我通常是这样做的 在主程序中,创建一个包含所有作业参数和结果的“作业类” 然后运行后台工作程序,并将作业类传递给后台工作程序 在后台,你要跟踪那门课的进度 在您的情况下,您需要支持作业中止,并将到目前为止的结果传递回主程序,并使用xml序列化或其他方法保存它 然后,当您第二次加载程序时,您需要再次加载作业类中的所有内容,并继续运行 Public Class Job public JobProgress as

当我关闭或打开程序时,是否有办法保存和加载backgroundworker进度

我通常是这样做的

在主程序中,创建一个包含所有作业参数和结果的“作业类”

然后运行后台工作程序,并将作业类传递给后台工作程序

在后台,你要跟踪那门课的进度

在您的情况下,您需要支持作业中止,并将到目前为止的结果传递回主程序,并使用xml序列化或其他方法保存它

然后,当您第二次加载程序时,您需要再次加载作业类中的所有内容,并继续运行

Public Class Job
     public JobProgress as integer
     public JobStillRunning as boolean
end class
把所有与工作有关的东西都放在这里

然后你把这份工作称为:

BackgroundWorker1.RunWorkerAsync(MyJob)
在后台进程中,您可以检索类:

dim MyJob as Job = trycast(e.Argument, job)
在进度更新和完成时,您也会这样做,您只需不断通过课程

如何将类保存为XML:

        Dim Serializer As New System.Xml.Serialization.XmlSerializer(GetType(Job))
        Using OutPutStream As System.IO.FileStream = New FileStream(OutPutFile, FileMode.CreateNew)
                  Serializer.Serialize(OutPutStream, MyJob)
        End Using
以及如何重新加载它

            Dim Serializer As New System.Xml.Serialization.XmlSerializer(GetType(Job))
            Using InputStream As System.IO.FileStream = New FileStream(AdminSettingsFile, FileMode.Open, FileAccess.Read, FileShare.Read)
                    MyJob = Serializer.Deserialize(InputStream)
            End Using
您还可以使用两行额外代码对其进行压缩和加密。但我认为你不会需要那个


请注意,并非所有类型都支持序列化,例如,集合和分类列表不会序列化。您需要将它们转换为平面数组。

我明白了,但我不知道从何处开始编写代码。如何将backgroundworker进度传递给类,例如,我的backgroundworker更改我的文本框内容并控制数组循环。我想跟踪他们。你说的xml怎么样。我真的很想尝试保存和加载它。