我认为如果一个对象实现IDisposable
是一件好事,当您不再需要它时将其丢弃是一件好事。
DataObject
提供了IDataObject
接口的基本实现,所以你为什么不从中派生:
public sealed class HtmlDataObject : DataObject, IDisposable
{
protected MemoryStream HtmlMemoryStream { get; set; }
public HtmlDataObject(MemoryStream memoryStream, string fallBackText)
{
HtmlMemoryStream = memoryStream;
SetText(fallBackText);
SetData(DataFormats.Html, false, HtmlMemoryStream );
}
public void Dispose()
{
HtmlMemoryStream .Dispose();
}
}
所以你的方法可以改变:
public HtmlDataObject GetClipboardData()
{
return new HtmlDataObject(this.GenerateHtml(), this.fallbackText.ToString());
}
当你用完它时,你可以把它放入一个using statement
或它中。Dispose()
最后的想法:你不应该担心剪贴板数据,因为DataObject
当你退出应用程序时无论如何都会被销毁,你的剪贴板会丢失你放入其中的内容。
http://msdn.microsoft.com/en-us/library/office/gg278673.aspx
如果您希望流在处理后和/或应用程序退出时保持不变,您必须使用带有参数 =的Clipboard.SetDataObjectcopy
true