C# 跟踪转移进度->;哪种资源?
我正在创建一个处理本地文件传输到Azure帐户的应用程序。 对于目录,我构建了一个要异步传输的文件列表 我正在使用进度处理程序实时跟踪每个文件传输的字节数。它使用动作对象。像这样:C# 跟踪转移进度->;哪种资源?,c#,azure,C#,Azure,我正在创建一个处理本地文件传输到Azure帐户的应用程序。 对于目录,我构建了一个要异步传输的文件列表 我正在使用进度处理程序实时跟踪每个文件传输的字节数。它使用动作对象。像这样: Action<TransferStatus> action = (status) => { Console.WriteLine("Transfered bytes: {0}", status.BytesTransferred); }; Action动作=(状态)=>{ WriteLi
Action<TransferStatus> action = (status) => {
Console.WriteLine("Transfered bytes: {0}", status.BytesTransferred);
};
Action动作=(状态)=>{
WriteLine(“传输的字节:{0}”,status.ByTestTransfered);
};
其中,操作在系统中定义为
public delegate void Action<in T>(T obj)
公共委托无效操作(T obj)
TransferStatus是一个seal类,不包含任何方法,只包含四个属性(ByTestTransferred、NumberOfFilesTransferred、NumberofFilesSkipped、NumberOfFilesFailed),但与输入资源无关
最后,每次我都要跟踪转移进度:
Progress<TransferStatus> progress = new Progress<TransferStatus>(action);
SingleTransferContext context = new SingleTransferContext(null);
context.ProgressHandler = progress;
进度=新进度(行动);
SingleTransferContext=新的SingleTransferContext(null);
context.ProgressHandler=进度;
但是,我想知道action body中涉及的资源(即源文件)如下:
Action<TransferStatus> action = (status) => {
Console.WriteLine("File: {0}", getFile()); // ???
Console.WriteLine("Transfered bytes: {0}", status.BytesTransferred);
};
Action动作=(状态)=>{
WriteLine(“文件:{0}”,getFile());/???
WriteLine(“传输的字节:{0}”,status.ByTestTransfered);
};
Action不是类而是委托,因此无法扩展(当为每个文件实例化Action时,不可能添加属性来分配输入资源)。
不可能使用字典将状态链接到文件,因为状态不是我自己实例化的。Idem用于操作(不可能在代理正文中使用关键字“this”)
也许有一种简单的方法可以从操作中获取文件名?
有人知道Azure API吗
谢谢。我解决了这个问题。这是一个错误的问题。我认为这里缺少一些上下文。
TransferStatus
是如何实现的?为什么不能简单地扩展它以包含所需的数据呢?TransferStatus类不是我自己实例化的,而是在框架内实例化的。因此,我无法确定它的实例化位置(无法确定上下文)。而且,它是一个密封类,因此不能扩展。