草庐IT

NAT模式

全部标签

c# - 在 C# 中实现生产者/消费者模式

如何使用事件和委托(delegate)在C#中实现生产者/消费者模式?使用这些设计模式时,在资源方面需要注意什么?是否有任何我需要注意的边缘情况? 最佳答案 我知道这个帖子有点老了,但由于我有时会在搜索中遇到它,所以我决定将这个生产者-消费者代码分享给那些想知道如何实现简单的通用生产者-消费者作业队列的人。Job类用于以委托(delegate)的形式“存储”对象的方法调用。然后在处理作业时调用委托(delegate)。任何相关的参数也存储在这个Job类中。通过这个简单的模式,可以在入队和出队过程中实现多线程。实际上这只是最简单的部分

c# - Release模式下 Console.SetOut 的问题?

我的代码中有一堆Console.WriteLines,我可以在运行时观察它们。我与我也编写的native库进行通信。我想在native库中添加一些printf并观察它们。但是我在运行时看不到它们。我创建了一个复杂的helloworld应用程序来演示我的问题。当应用程序运行时,我可以调试到native库并看到调用了helloworld。但是,输出永远不会出现在文本编写器中。请注意,如果相同的代码作为控制台应用程序运行,则一切正常。C#:[DllImport("native.dll")]staticexternvoidTest();StreamWriterwriter;publicForm

c# - 为什么 List<>.OrderBy LINQ 在 Debug模式下比 IComparable+List<>.Sort 更快?

我感兴趣的是使用LINQ或通过实现IComparable接口(interface)和List.Sort对我的类进行排序是否会更快。当LINQ代码更快时,我感到非常惊讶。为了进行测试,我使用不太恰当的名称TestSort创建了一个非常简单的类,实现了IComparable。classTestSort:IComparable{privateintage;privatestringgivenName;publicintAge{get{returnage;}set{age=value;}}publicstringGivenName{get{returngivenName;}set{givenN

c# - 是否有用于处理 Internet 上的大型数据集的设计模式?

我正在寻找一种设计模式来处理互联网上的大型数据集,并定期更新这些对象。我正在开发一个应用程序,它将一次在UI中显示数千条记录。此外,这些对象的各种属性都是暂时的,需要在客户端上更新,以使用户了解系统中这些记录的状态变化。我有一些如何解决这个问题的想法,但我认为可能有一个(或多个)设计模式可以处理这种类型的场景。限制:客户端是用Silverlight编写的。对象本身并不是很大(大约有15个值类型和字符串属性),但是查询所有数据的开销很大。15个左右的属性包含来自各种来源的数据;没有巧妙的连接语句或索引会加速查询。我正在考虑在初始加载时只填充属性的一个子集,然后在用户放大给定的对象分组时填

c# - 可以替代面向对象设计模式的功能或动态技术示例

这与DoesfunctionalprogrammingreplaceGoFdesignpatterns?有些相关自从在C#中引入了lambda和动态,是否有任何标准设计模式可以被视为过时或使用lambda或其他语言功能以其他方式解决?比如现在可以利用C#的动态特性来做multimethod。http://achoiusa.wordpress.com/2009/08/27/exploring-c-4-0-multimethods/(我想MarcGravell有一些关于这个的帖子?)就我个人而言,现在我倾向于使用FuncofT来做工厂。例如publicstaticclassSomeFact

c# - 通过构建器模式使用异步任务

我目前使用构建器模式构建我的MVCView模型。varviewModel=builder.WithCarousel(),.WithFeaturedItems(3),.Build()我遇到的问题是当我必须对异步方法进行服务调用时。这意味着我的构建器方法必须返回Task而不是HomeViewModelBuilder.这阻止了我必须链接构建方法await他们。示例方法publicasyncTaskWithCarousel(){varcarouselItems=await_service.GetAsync();_viewModel.Carousel=carouselItems;returnth

c# - "Handler"模式?

我遇到过一种被称为“处理程序模式”的设计模式,但我在任何地方都找不到对该模式的任何真正引用。它基本上只是一个单一方法的接口(interface),允许您轻松地在后端扩展功能,而无需让客户端重新编译。对于必须处理许多不同类型的请求的Web服务可能很有用。这是一个例子:publicinterfaceIHandler{IDictionaryHandle(IDictionaryargs);}args通常会包含一个键,例如“Action”,其值告诉实现要做什么。可以传入额外的args来为impl提供更多信息。然后impl传回客户端“应该”理解的任意参数列表。这是一种反模式,还是伪装的另一种模式?

C#工厂模式和IoC的区别

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:DependencyInjectionvsFactoryPattern有人能解释一下(用简单的例子)工厂模式和控制反转模式之间的区别吗?最好使用.NET2.0

c# - 内存库模式和单元测试

我已经看到了存储库模式的一些实现,非常简单直观,链接来自stackoverflow中的其他答案http://www.codeproject.com/Tips/309753/Repository-Pattern-with-Entity-Framework-4-1-and-Chttp://www.remondo.net/repository-pattern-example-csharp/publicinterfaceIRepository{voidInsert(Tentity);voidDelete(Tentity);IQueryableSearchFor(Expression>predi

C# 7 模式匹配与元组

是否可以像这样使用c#7在switch语句中使用具有模式匹配的元组:switch(parameter){case((object,object))tObjwhentObj.Item1=="ABC":break;}我收到一条错误消息,提示tObj在当前上下文中不存在。我也试过这个:switch(parameter){case(object,object)tObjwhentObj.Item1=="ABC":break;}这很好用:switch(parameter){caseMachineModelmodelwhenmodel.Id=="123":break;}