草庐IT

tpl-dataflow

全部标签

c# - 如何为 TPL 中的任务分配名称

我将在我的应用程序上运行大量任务。由于某种原因,每组任务都在运行。我想给这些任务命名,这样当我查看“并行任务”窗口时,我可以很容易地识别它们。从另一个角度来看,假设我在框架级别使用任务来填充列表。使用我的框架的开发人员也在为她的工作使用任务。如果她查看并行任务窗口,她会发现一些任务不知道。我想给任务命名,这样她就可以区分框架任务和她的任务。如果有这样的API就很方便了:vartask=newTask(action,"Growthcalculationtask")或者也许:vartask=Task.Factory.StartNew(action,"Populatingthedatagri

c# - 有没有办法将任务并行库 (TPL) 与 SQLDataReader 一起使用?

我喜欢TPL中Parallel.For和Parallel.ForEach扩展方法的简单性。我想知道是否有一种方法可以利用类似的东西,甚至可以利用稍微更高级的任务。下面是SqlDataReader的典型用法,我想知道是否可行,如果可行,如何用TPL中的内容替换下面的while循环。因为读者无法提供固定数量的迭代,所以For扩展方法是不可能的,这让我无法处理我会收集的任务。我希望有人可能已经解决了这个问题并制定了一些使用ADO.net的注意事项。using(SqlConnectionconn=newSqlConnection("myConnString"))using(SqlCommand

c# - 使用 Tasks (TPL) 库会使应用程序多线程吗?

最近在接受采访时,我被问到了这个问题。问:你写过多线程应用程序吗?答:是的问:介意解释更多吗?答:我用过Tasks(任务并行库)执行一些任务,如waitingforsomeinfofrominternetwhileloadingUI.这提高了我的应用程序可用性。问:但是,刚刚你用过TPL表示您写了一个multithreaded应用?我:(不知道说什么1)那么,究竟什么是多线程应用程序?和用Tasks有区别吗? 最佳答案 任务可用于表示在多个线程上发生的操作,但它们不是必须的。可以编写仅在单个线程中执行的复杂TPL应用程序。例如,当您

c# - TPL 与响应式框架

什么时候会选择使用Rx而不是TPL,或者这两个框架是正交的吗?据我了解,Rx主要旨在提供对事件的抽象并允许组合,但它也允许提供对异步操作的抽象。使用Createxx重载和Fromxxx重载,并通过处理返回的IDisposable来取消。TPL还通过任务和取消功能为操作提供抽象。我的难题是什么时候使用哪种场景? 最佳答案 Rx的主要目的不是提供对事件的抽象。这只是其成果之一。其主要目的是为集合提供可组合的推送模型。响应式框架(Rx)基于IObservable是IEnumerable的数学对偶.因此,而不是使用IEnumerable从集

c# - TPL 数据流,Post() 和 SendAsync() 之间的功能区别是什么?

我对通过Post()或SendAsync()发送项目之间的区别感到困惑。我的理解是,在所有情况下,一旦项目到达数据block的输入缓冲区,控制权就会返回到调用上下文,对吗?那我为什么需要SendAsync?如果我的假设不正确,那么我想知道,相反,如果使用数据block的整个想法是建立一个并发和异步环境,为什么有人会使用Post()。我当然理解技术上的区别在于Post()返回bool而SendAsync返回bool的可等待任务。但这有什么影响呢?bool的返回(我的理解是确认该项目是否被放置在数据block的队列中)何时会被延迟?我了解async/await并发框架的一般概念,但在这里它

c# - 如何创建运行 STA 线程的任务 (TPL)?

使用线程非常简单Threadthread=newThread(MethodWhichRequiresSTA);thread.SetApartmentState(ApartmentState.STA);如何在WPF应用程序中使用Tasks完成相同的任务?这是一些代码:Task.Factory.StartNew(()=>{return"someText";}).ContinueWith(r=>AddControlsToGrid(r.Result));我得到一个InvalidOperationExceptionThecallingthreadmustbeSTA,becausemanyUIco

c# - 不对 TPL 任务对象调用 Dispose() 是否可以接受?

我想触发一个任务在后台线程上运行。我不想等待任务完成。在.net3.5中我会这样做:ThreadPool.QueueUserWorkItem(d=>{DoSomething();});在.net4中,TPL是建议的方式。我看到推荐的常见模式是:Task.Factory.StartNew(()=>{DoSomething();});然而,StartNew()方法返回Task实现IDisposable的对象。这个似乎被推荐这种模式的人忽略了。Task.Dispose()上的MSDN文档方法说:"AlwayscallDisposebeforeyoureleaseyourlastreferen

go - 使用 Go SDK 的 Cloud Dataflow 并行问题

我在GoSDK上实现了ApacheBeam代码,如下所述。管道有3个步骤。一个是textio.Read,另一个是CountLines,最后一步是ProcessLines。ProcessLines步骤需要大约10秒的时间。为了简洁起见,我只是添加了一个Sleep函数。我正在调用有20个工作人员的管道。当我运行管道时,我的预期是20个工作人员并行运行,textio.Read从文件中读取20行,ProcessLines将在10秒内执行20次并行执行。然而,管道并不是那样工作的。它目前的工作方式是textio.Read从文件中读取一行,将数据推送到下一步并等待ProcessLines步骤完成其

python - 如何从 GCP 中的 Cloud Functions 调用用 Go 编写的 Dataflow 作业

我的目标是创建一种机制,当新文件上传到云存储时,它会触发云函数。最终,此Cloud函数将触发CloudDataflow作业。我有一个限制,即CloudDataflow作业应使用Go编写,而CloudFunction应使用Python编写。我现在面临的问题是,我无法从CloudFunction调用CloudDataflow作业。用Go编写的CloudDataflow中的问题是ApacheBeamGoSDK中没有定义template-location变量。这就是我无法创建数据流模板的原因。而且,由于没有数据流模板,我可以从云函数调用云数据流作业的唯一方法是编写一个Python作业,该作业调

php - 什么是 .tpl 文件? PHP,网页设计

有人要我重新设计一个用PHP(VideoCMS)运行的网站。但是当我让他把源代码发给我时,他给了我*.tpl文件而不是*.php。其中有一些代码:{includefile='header.tpl'p="article"}{$lang.articles}{$article_categories}{$lang.members}{if$logged_in=='1'}{includefile='loggedin_body.tpl'}{else}{includefile='login_body.tpl'}{/if}或{includefile='header.tpl'p="index"}{php}