草庐IT

factory-pattern

全部标签

c# - 带有 DI 和 IoC 的工厂方法

我熟悉这些模式,但仍然不知道如何处理以下情况:publicclassCarFactory{publicCarFactory(Dep1,Dep2,Dep3,Dep4,Dep5,Dep6){}publicICarCreateCar(type){switch(type){caseA:returnnewCar1(Dep1,Dep2,Dep3);break;caseB:returnnewCar2(Dep4,Dep5,Dep6);break;}}}一般来说,问题在于需要注入(inject)的引用数量。车多了就更糟了。我想到的第一个方法是在工厂构造函数中注入(inject)Car1和Car2,但它违

c# - 降低 Task.Factory.StartNew 线程的优先级

像下面这样的代码将启动一个新线程来完成这项工作。有什么方法可以控制该线程的优先级吗?Task.Factory.StartNew(()=>{//everythingherewillbeexecutedinanewthread.//IwanttosetthepriorityofthisthreadtoBelowNormal}); 最佳答案 正如其他人所提到的,您需要指定一个自定义调度程序来完成您的任务。不幸的是,没有合适的内置调度程序。您可以选择Glenn链接到的ParallelExtensionsExtras,但如果您想要一些可以直接

c# - 降低 Task.Factory.StartNew 线程的优先级

像下面这样的代码将启动一个新线程来完成这项工作。有什么方法可以控制该线程的优先级吗?Task.Factory.StartNew(()=>{//everythingherewillbeexecutedinanewthread.//IwanttosetthepriorityofthisthreadtoBelowNormal}); 最佳答案 正如其他人所提到的,您需要指定一个自定义调度程序来完成您的任务。不幸的是,没有合适的内置调度程序。您可以选择Glenn链接到的ParallelExtensionsExtras,但如果您想要一些可以直接

c# - Task.Factory.StartNew 与 Task.Factory.FromAsync

假设我们有一个I/O绑定(bind)方法(例如进行数据库调用的方法)。此方法既可以同步运行,也可以异步运行。也就是说,同步:IOMethod()异步:BeginIOMethod()EndIOMethod()那么当我们以如下所示的不同方式执行该方法时,在资源利用率方面的性能差异是什么?vartask=Task.Factory.StartNew(()=>{IOMethod();});task.Wait();vartask=Task.Factory.FromAsync(BeginIOMethod,EndIOMethod,...);task.Wait(); 最佳答案

c# - Task.Factory.StartNew 与 Task.Factory.FromAsync

假设我们有一个I/O绑定(bind)方法(例如进行数据库调用的方法)。此方法既可以同步运行,也可以异步运行。也就是说,同步:IOMethod()异步:BeginIOMethod()EndIOMethod()那么当我们以如下所示的不同方式执行该方法时,在资源利用率方面的性能差异是什么?vartask=Task.Factory.StartNew(()=>{IOMethod();});task.Wait();vartask=Task.Factory.FromAsync(BeginIOMethod,EndIOMethod,...);task.Wait(); 最佳答案

c# - 使用 Task.Factory.StartNew 传递方法参数

我有以下代码:vartask=Task.Factory.StartNew(CheckFiles,cancelCheckFile.Token,TaskCreationOptions.LongRunning,TaskScheduler.Default);privatevoidCheckFiles(){//Dostuff}我现在想修改CheckFiles以接受整数和BlockingCollection引用privatevoidCheckFiles(intInputID,BlockingCollectionBlockingDataCollection){//Dostuff}我似乎无法像上面那样

c# - 使用 Task.Factory.StartNew 传递方法参数

我有以下代码:vartask=Task.Factory.StartNew(CheckFiles,cancelCheckFile.Token,TaskCreationOptions.LongRunning,TaskScheduler.Default);privatevoidCheckFiles(){//Dostuff}我现在想修改CheckFiles以接受整数和BlockingCollection引用privatevoidCheckFiles(intInputID,BlockingCollectionBlockingDataCollection){//Dostuff}我似乎无法像上面那样

c# - 创建线程 - Task.Factory.StartNew 与 new Thread()

我刚刚了解.Net4中新的线程和并行库过去我会像这样创建一个新线程(作为示例):DataInThread=newThread(newThreadStart(ThreadProcedure));DataInThread.IsBackground=true;DataInThread.Start();现在我可以:Taskt=Task.Factory.StartNew(()=>{ThreadProcedure();});有什么区别?谢谢 最佳答案 区别很大。任务在ThreadPool上安排,如果合适,甚至可以同步执行。如果您有长时间运行的后

c# - 创建线程 - Task.Factory.StartNew 与 new Thread()

我刚刚了解.Net4中新的线程和并行库过去我会像这样创建一个新线程(作为示例):DataInThread=newThread(newThreadStart(ThreadProcedure));DataInThread.IsBackground=true;DataInThread.Start();现在我可以:Taskt=Task.Factory.StartNew(()=>{ThreadProcedure();});有什么区别?谢谢 最佳答案 区别很大。任务在ThreadPool上安排,如果合适,甚至可以同步执行。如果您有长时间运行的后

c# - Task.Run() 和 Task.Factory.StartNew() 有什么区别

我有方法:privatestaticvoidMethod(){Console.WriteLine("Method()started");for(vari=0;i我想在一个新任务中启动这个方法。我可以像这样开始新任务vartask=Task.Factory.StartNew(newAction(Method));或者这个vartask=Task.Run(newAction(Method));但是Task.Run()和Task.Factory.StartNew()之间有什么区别吗?他们都在使用ThreadPool并在创建任务实例后立即启动Method()。我们什么时候应该使用第一个变体,什