异步/等待高性能服务器应用程序?

C#5中新的async / await关键字看起来非常有前途,但我读了一篇关于性能对这些应用程序影响的文章,因为编译器将为异步方法生成一个非常复杂的状态机。 使用这些关键字进行异步编程要容易得多,但是对套接字来说SocketAsyncEventArgs是不是很好? 第二个问题:像Stream.WriteAsync这样的异步IO方法是非同步的(.Net上的完成端口或Mono上的epoll / poll)还是这些方法用于将写入调用推送到线程池的廉价包装器? 第三个问题:除了UI应用程序的SynchronizationContext之外,有没有办法实现某种sinlge-threaded上下文? 像事件循环之类的东西,以便在主线程上继续完成任务? 我发现了Nito.AsyncEx库,但我不确定这是否是我需要的。

绑定DataGridComboBoxColumn

我试图将Ob的ObservableCollection绑定到DataGrid的DataGridComboBoxColumn。 DataGrid定义是: 这是ViewModel和Model public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); var viewModel = new ViewModel(); DataContext = viewModel; } } public class ViewModel : ViewModelBase { private ObservableCollection _model; public ViewModel() { var list = new List(); var roadTypes = new ObservableCollection { new RoadType { Code = 1, Id = […]

C#使用SoundPlayer暂停和恢复

我是另一个涉及C#的人,想要创建一个简单的音频应用程序,通过上传程序播放加载到程序中的wav文件。 我的问题是当我通过我的播放按钮再次启动音频文件时,我需要获取正在播放的任何音频文件以暂停使用音频文件的音轨计时器。 我已经有了一个全局计时器’baseTimer’,我认为我可以使用它来设置音频文件,已停止,跟踪持续时间点。 但是我不知道如何完成这个,也不知道如何使用所有mci命令。 我已经为我的主应用程序显示了我的所有代码…我还读过我可能需要使用线程,但我也读过,用线程设置音频文件跟踪持续时间是不可能的。 public partial class FrmMain : Form { public FrmMain() { InitializeComponent(); } System.Timers.Timer baseTimer = new System.Timers.Timer(); List PlayList = new List(); List PlayList_byte; int soundNum = 0; private string music_PATH { get; set; } private string talk_PATH { get; set; } private byte Pause_TIME { get; set; } private […]

如何在0.5秒内用WPF画出数万个点?

我正在编写WPF代码来显示实时情节,这是一条包含大约10,000点的连线。 在我的电脑中显示图片大约需要5秒钟。 有没有人有想法让它更快,并在0.5秒内? class eee : FrameworkElement { public eee() { _children = new VisualCollection(this); Random rand = new Random(); DrawingVisual dv = new DrawingVisual(); using (DrawingContext dx = dv.RenderOpen()) { Pen drawingPen = new Pen(Brushes.Black, 1); double x=rand.Next(300); double y = rand.Next(300); for (double i = 0; i < 1000; i = i + […]

从MATLAB发布.NET程序集

我正在开发一个与C#dll库连接的小型MATLAB项目。 MATLAB文档允许您按照此处所述加载程序集: http : //uk.mathworks.com/help/matlab/ref/net.addassembly.html? s_tid = gn_loc_drop和http://uk.mathworks.com/help/ MATLAB / matlab_external /一个组件-是-A-库的净classes.html 我的呼吁如下: NET.addAssembly(‘C:\MyLibrary.dll’); 一切都很好,我甚至可以通过附加到MATLAB过程来调试VS,但是有一个小问题。 没有’removeAssembly’方法可以将程序集与MATLAB进程断开连接。 如果我想在VS中进行更改,我必须重新启动MATLAB来解锁DLL,这实际上是一个痛苦的事情。 我甚至试图使用解锁软件而没有运气.MATLAB冻结。 有谁知道如何处理这个?

在列表中显示项目的位置

我正在使用链接列表。 我的构造函数接受带有项目的数组,或者通过BtnAddTree单击将项目(一次一个)附加到列表中。 出于实验原因,我试图找出一种从列表中检索项目位置的方法。 我设置了三个按钮,希望显示: first , next , last项目,并通过label显示。 我创建了两个函数来实现我的需求Retrieve和Current_Tree()但是这里我走到了死胡同。 我知道显示next我可能需要使用循环的项目,但不确定如何去做。 如何显示列表中找到的项目的位置? public class ListForTrees { //Retrieve Position of item public void Retrieve(int Position) { int new_position = Position; fruit_trees current = first_tree; for (int i = 0; i < Position && current != null; i++) { current = current.next_tree; } return current; } //Show […]

iTextSharp库不从我的文件中提取文本

iTextSharp库(版本5.5.5)不从我的文件中提取文本。 我可以将pdf中的文本复制并粘贴到记事本中。 我将文件上传到此链接。 源代码非常简单,适用于其他pdf文件,但对于这个有问题的文件,我得到的是一些没有任何意义的字符。 var text = string.Empty; using (var file = new File.OpenRead(path)) { using (var reader = new PdfReader(file)) { for (int pageNumber = 1; pageNumber <= reader.NumberOfPages; pageNumber++) { text += PdfTextExtractor.GetTextFromPage(reader, pageNumber); } } } 任何帮助都非常感谢。

如何引用具有数百万个节点的树中的子节点

我正在尝试构建一个树,其中每个节点可以有一个未指定数量的子节点。 该树在实践中将拥有超过一百万个节点。 我已经设法构建了树,但是当我用几千个节点填充树时,由于完整堆,我遇到了内存错误。 这是因为我试图将每个节点的子节点存储在Dictionary数据结构(或任何数据结构)中。 因此,在运行时我已经创建了数千个这样的数据结构,因为每个节点可以具有未指定数量的子节点,并且每个节点的子节点将存储在该数据结构中。 还有另一种方法吗? 我不能简单地使用变量来存储子节点的引用,因为每个节点可能有一个未指定数量的子节点。 那么,它不像二叉树,我可以有2个变量分别跟踪左孩子和右孩子。 请不要另外建议这样做的方法。 我有理由需要创建这个树,不幸的是我不能这样做。 谢谢!

WCF – 找不到X509SecurityToken的令牌validation器

我正在尝试调用第三方Web服务,我已经到了能够在服务跟踪查看器中实际看到服务器响应的地步。 但是,我不断从.NET获得exception: Cannot find a token authenticator for the ‘System.IdentityModel.Tokens.X509SecurityToken’ token type. Tokens of that type cannot be accepted according to current security settings. 我的app.config看起来像这样(用占位符替换了Thumbprints): <defaultCertificate findValue="” x509FindType=”FindByThumbprint” storeLocation=”CurrentUser” storeName=”TrustedPeople”/> <clientCertificate findValue="” x509FindType=”FindByThumbprint”/> 现在,我已经尝试了有关此exception的所有内容。 将authenticationMode设置为MutualCertificate :服务器响应404 设置allowSerializedSigningTokenOnReply :无变化 来自服务器的响应包含: 我可以在某处添加x508SecurityToken处理程序,否则忽略此错误(这样做是否安全) exception堆栈跟踪: Server stack trace: at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlReader reader, SecurityTokenResolver tokenResolver, IList`1 allowedTokenAuthenticators, SecurityTokenAuthenticator& usedTokenAuthenticator) at System.ServiceModel.Security.ReceiveSecurityHeader.ReadToken(XmlDictionaryReader […]

用自定义DbSet / IDbSet包装DbSet ?

首先,我认为这样做有些荒谬,但是我团队的其他成员坚持认为,除了“我认为这是愚蠢的”之外,我无法提出反对它的好论据…… 我们要做的是创建一个完全抽象的数据层,然后对该数据层进行各种实现。 很简单吧? 输入entity framework4.1 … 我们的最终目标是程序员(我尽我所能只留在数据层)永远不希望暴露在具体的类中。 除了显然需要实例化工厂之外,他们只想在代码中使用接口。 我希望实现以下内容: 首先我们有所有接口的“Common”库,我们称之为“Common.Data”: public interface IEntity { int ID { get; set; } } public interface IUser : IEntity { int AccountID { get; set; } string Username { get; set; } string EmailAddress { get; set; } IAccount Account { get; set; } } public interface IAccount […]