跟踪转移进度->哪个资源?

时间:2018-07-25 16:11:40

标签: c# azure

我正在创建一个处理本地文件到Azure帐户传输的应用程序。 如果是目录,我会建立一个文件列表以异步传输。

我正在使用进度处理程序来实时跟踪每个文件传输的字节数。它使用一个Action对象。像这样:

Action<TransferStatus> action = (status) => {  
    Console.WriteLine("Transfered bytes: {0}", status.BytesTransferred); 
};

其中“操作”在系统中定义为

public delegate void Action<in T>(T obj)

TransferStatus是一个密封类,不包含任何方法,仅包含四个属性(BytesTransferred,NumberOfFilesTransferred,NumberofFilesSkipped,NumberOfFilesFailed),但与输入资源无关。

最后,每次我必须跟踪转移进度时:

Progress<TransferStatus> progress = new Progress<TransferStatus>(action);
SingleTransferContext context = new SingleTransferContext(null);
context.ProgressHandler = progress;

但是,我想在操作主体中知道涉及哪个资源(即源文件),如下所示:

Action<TransferStatus> action = (status) => {  
    Console.WriteLine("File: {0}", getFile()); // ???
    Console.WriteLine("Transfered bytes: {0}", status.BytesTransferred); 
};

动作不是类而是委托,因此无法扩展(当无法理解每个文件的动作时,无法添加属性来分配输入资源)。 由于状态不是由我自己确定的,因此无法使用字典将状态链接到文件。同上行动(不可能在代表体内使用关键字“ this”)。

也许有一种简单的方法可以从操作中获取文件名? 任何人都知道Azure API吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题。这是一个错误的问题。