处理来自不同班级

时间:2017-02-06 11:15:54

标签: c# cancellation

我有一个类似的课程:

public class FtpTaskVideo : IFtpTask
{
    //some fields
    public CancellationTokenSource tokenSource = new CancellationTokenSource();

    private Panel CreatePanel(string text, int count, int value)
    {
        Panel pnlOutput = new Panel();
        pnlOutput.Name = "pnlInfo";
        pnlOutput.AutoSize = true;
        pnlOutput.BorderStyle = BorderStyle.FixedSingle;

        //adding some controls

        Button btnUserCancel = new Button();
        btnUserCancel.Name = "btnUserCancel";
        btnUserCancel.AutoSize = true;
        btnUserCancel.Text = "Stop";
        btnUserCancel.Click += new EventHandler(btnUserCancel_Click);
        pnlOutput.Controls.Add(btnUserCancel);
        btnUserCancel.BringToFront();

        return pnlOutput;
    }

    public void btnUserCancel_Click(object sender, EventArgs e)
    {
        tokenSource.Cancel();
    }

    public void Start()
    {
         //some code
        while(somethingToDownload)
        {
         var task = Task<SharedConstants.downloadFtpFileStatus>.Factory.StartNew(() => dff.Download(tokenSource.Token), tokenSource.Token);
         try
         {
             downloadStatus = task.Result;
         }
         catch (System.AggregateException exc)
         {
               //do something                 
         }
         //some code
        }
}

在第二课(dff)中:

public Shared.Classes.SharedConstants.downloadFtpFileStatus Download(CancellationToken token)
{
    if (token.IsCancellationRequested)
    {
        return Shared.Classes.SharedConstants.downloadFtpFileStatus.CANCELLED;               
    }
    else //do some stuff
}

现在,我有另一个类,其中dff是一个实例,而下载是它的方法。 dff所做的一件事是根据下载方法操作中获取的数据更新和重绘面板。如何,在它按下按钮并按下它后,我可以将取消令牌发送回原始课程以阻止其下载吗?

0 个答案:

没有答案