我成功地使用了Delay 博客中的 VirtualFileDataObject 代码,但我想避免将整个文件流式传输到内存中。
我在 Stack Overflow 上找到了这个先前回答的问题将大型虚拟文件从 c# 拖放到 Windows 资源管理器 该问题由 matthieu 通过更改 SetData 方法的签名来回答。
这是我的问题,更改 SetData 方法的签名后,调用它的其他地方仍在寻找旧签名。
这是原始的SetData;
public void SetData(short dataFormat, int index, Action<Stream> streamData)
{
_dataObjects.Add(
new DataObject
{
FORMATETC = new FORMATETC
{
cfFormat = dataFormat,
ptd = IntPtr.Zero,
dwAspect = DVASPECT.DVASPECT_CONTENT,
lindex = index,
tymed = TYMED.TYMED_ISTREAM
},
GetData = () =>
{
// Create IStream for data
var ptr = IntPtr.Zero;
var iStream = NativeMethods.CreateStreamOnHGlobal(IntPtr.Zero, true);
if (streamData != …Run Code Online (Sandbox Code Playgroud)