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