如何序列化包含System.Threading.Thread的对象?

时间:2009-12-31 17:24:02

标签: c# serialization attributes

System.Runtime.Serialization.SerializationException: 
Type 'System.Threading.Thread' in Assembly 'mscorlib, Version=2.0.0.0,
Culture=neutral, PublicKeyToken=b77a5c561934e089' is not marked as serializable.

有办法吗?我已经将Serializable属性添加到我的所有类中,但是我无法为这样的事物添加属性,可以吗?如果可以的话,有没有办法彻底解决这个问题?因为我不想总是要将[Serializable]添加到所有内容中。

PS,在我的项目中,我动态编译C#代码并将其包含在我的应用程序中。

编辑一:由于我的应用程序的性质,所有事件,所有事件等都由我的单独线程管理。我无法摆脱这一事实,因为我需要同时执行许多任务。有没有办法解决这个问题?

3 个答案:

答案 0 :(得分:6)

一种选择是将线程对象(以及您不希望序列化的任何其他内容)标记为[NonSerialized]

然后,您可以使用已序列化的任何信息来重建非序列化对象。

答案 1 :(得分:4)

您无法序列化一个线程,因此最好的办法是从需要序列化的任何类中删除对Thread的依赖。通常,您希望可序列化对象主要由原始字段组成,或者对也可序列化的其他对象的引用。

答案 2 :(得分:0)

[Non Serializable]拼写错误,应为[NonSerialized]