Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 设计用于导出和中止导出的Api_C#_.net_Multithreading_Oop - Fatal编程技术网

C# 设计用于导出和中止导出的Api

C# 设计用于导出和中止导出的Api,c#,.net,multithreading,oop,C#,.net,Multithreading,Oop,我正在创建一个API来支持导出和中止操作。例如 class Export { //starts an export operation. void Start(); //aborts an export operation void Abort(); } 客户端可以是Gui或非Gui应用程序。启动操作可能需要一些时间来完成其工作,在这段时间内,用户可以调用abort。 那么api看起来如何,即这些方法的返回

我正在创建一个API来支持导出和中止操作。例如

    class Export
    {
        //starts an export operation.
        void Start();
        //aborts an export operation
        void Abort();
    }
客户端可以是Gui或非Gui应用程序。启动操作可能需要一些时间来完成其工作,在这段时间内,用户可以调用abort。 那么api看起来如何,即这些方法的返回值? 启动实现需要在新线程中启动操作并立即返回,还是应该是同步的

提示:启动操作将执行n个作业,如果某个作业(x,其中x 因此,当调用中止时,它应该立即返回还是应该如何返回

现在我所做的是

开始-->同步。 当调用abort时,它将等待启动完成当前操作并返回,然后abort方法将返回。但不知何故,我觉得我所做的是错的

感谢您的帮助,提前谢谢

注意:我还考虑过将这两个方法保持为异步,并用事件通知客户端完成,如Start completed、Abort completed。

您应该使用并用参数声明导出方法

Task ExportAsync(CancellationToken cancellationToken);

要取消操作,只需调用用于创建调用中传递的
CancellationToken

很高兴了解不同的异步模式,谢谢:)如果我只需要导出和中止,那么它(点击)将是最好的方法,但是,如果我想通过暂停并继续操作来扩展这个界面,该怎么办呢。你还觉得我们可以用TAP方法进行扩展吗?