摘要: 我们大多数的应用场景都是客户端传入参数,获得服务端的处理结果。但如果是用wcf做通信管道使用,可能会有这样的场景:客户端发来的数据,要在服务端界面上显示。典型的代码是这样的: public Window1() { InitializeComponent(); serviceHost = new ServiceHost(typeof (Service1)); serviceHost.Open(); }此时,没有办法从host访问内部的Service1。不能拿到Service1的实... 阅读全文
posted @ 2013-11-18 17:15 ^^! 阅读(386) 评论(0) 推荐(0) 编辑
摘要: AllowsTransparency使WindowsFormsHost透明,从而无法看到嵌入的c++控件效果。参考:http://social.msdn.microsoft.com/Forums/vstudio/en-US/6f9dd3b5-af92-4076-9b4e-1a770dd52f70/windowsformshost-and-allowstransparency-makes-all-win32-controls-transparent?forum=wpfhttp://stackoverflow.com/questions/4108531/wpf-windowsformshost-i 阅读全文
posted @ 2013-11-01 12:01 ^^! 阅读(1861) 评论(0) 推荐(0) 编辑
摘要: wpf做一个搜索框,想要在回车时搜索框内的文字。 在不加PreviewKeyDown时,虽然都绑定了相同的SearchCommand,但是结果不同。回车进入断点看Keyword的内容和按button看到的内容不同,可能是在viewmodel中绑定的属性值没能及时的更新为搜索框中的文字。那么在什么情况下能更新呢,经过测试,在焦点从文本框离开时会触发更新,于是增加PreviewKeyDown来引发焦点离开。private void SearchBox... 阅读全文
posted @ 2013-10-22 15:41 ^^! 阅读(3959) 评论(0) 推荐(1) 编辑
摘要: show client_encoding;set client_encoding='UTF8';show server_encoding;SELECT E'\\xDEADBEEF';CREATE TABLE tbl_image_t( id bigserial NOT NULL, name character varying(32), thumb bytea)insert into "tbl_image_t" values(4,'中文', E'\\x15191a1b')SELECT id, name, encod 阅读全文
posted @ 2013-10-12 10:30 ^^! 阅读(879) 评论(0) 推荐(0) 编辑
摘要: vs2012以后的CallerMemberName可以获取调用方法的名称,这个attribute提供类似stackTrace的功能,是通过编译器实现的。using System.Runtime.CompilerServices;public void DoProcessing() { TraceMessage("Something happened."); } public void TraceMessage(string message, [CallerMemberName] string memberName = "", [CallerFilePat 阅读全文
posted @ 2013-08-30 17:45 ^^! 阅读(290) 评论(1) 推荐(0) 编辑
摘要: 因正则表达式搜索总是出现死循环,开始考虑改为其他搜索方式,因为.net自带的IndexOf默认只能找到第一个或最后一个,如果要把全部的匹配项都找出来,还需要自己写循环SubString,所以想找下有没有现成的,就发现了在这个领域里,BM算法是王道,而sunday算法据说是目前最好的改进版,这一点我没有从国外的网站尤其是wiki上找到印证,但中文谈论sunday的文章很多,我就姑且认为它是最好的吧。这篇的图文很清晰的描述了算法过程http://www.cnblogs.com/lbsong/archive/2012/05/25/2518188.html可惜文中给的代码有的缺陷,如果找不到匹配会报索 阅读全文
posted @ 2013-08-19 12:22 ^^! 阅读(879) 评论(0) 推荐(0) 编辑
摘要: 如果是.net app调用c++代码,既可以p/invoke,也可以c++/cli,反之,如果是c++ app调用.net,只有c++/cli。现在有一应用,本来是.net调用c++,但是又需要c++捕获事件,处理后传出结果给.net,这个需求类似于回调,但一般回调时c++函数指针,现在要把.net方法变成函数指针传进去。关键的代码是Marshal::GetFunctionPointerForDelegate,注意这个方法是不支持输入泛型委托的。示例http://files.cnblogs.com/devourer/InjectFuncToCpp.7z这个例子做的不完美,字符串传入c++后需要 阅读全文
posted @ 2013-08-16 17:36 ^^! 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 惭愧的很,这个单词见过很多年,见人用过很多次,却不曾真正了解其本质作用。最近多线程工作多些,才开始重新注意这个关键词。默认情况下,内存在读写时会同时刷新至缓存、寄存器,那么下次再使用这个变量时,就会从缓存、寄存中读取,加快了速度。但是在多线程时,每个cpu的每个核心有自己的缓存,当改变内存值时,可能其他核心不知道这个改变,仍在使用自己的缓存值,就造成了错误。volatile标记这个内存不会被缓存,从而其他核心使用内存时总是从内存读取,只要内存值被改变,其他核心读取时就是最新值。好处是避免了使用错误值,坏处是降低了速度(但比使用锁快)。可以用来在类似isEnable之类的操作上使用,解决一些轻量 阅读全文
posted @ 2013-08-09 17:38 ^^! 阅读(344) 评论(0) 推荐(0) 编辑
摘要: 1 依赖QCall.net3个Timer,form.timer会占用ui线程,更重要的是非winform程序你会去引用form吗,所以一般不用。threading中的timer提供的方法不好用,一般也不用,常用的是System.Timer.TimerSystem.Timer.Timer实现上是依赖threading中的timer,而threading的timer又依赖TimerQueueTimer,最终是Qcall中的方法。再也反编译不到代码了,看不到具体如何实现的。Timer是很常用功能,往往这种常用的其实很难实现,即使实现了还可能一堆缺点。这种不知根知底的东西还是尽量少用吧。http:// 阅读全文
posted @ 2013-08-09 16:17 ^^! 阅读(709) 评论(0) 推荐(0) 编辑
摘要: 当需要对磁盘做长时间高速IO时,为了避免IO争用造成大量时间用于寻道而导致吞吐量降低,以及长时间IO造成错误数超限导致磁盘进入降速模式。在这种极限耗尽磁盘性能的情况下,应当把磁盘当做只能做单个任务的串行设备来用,对所有IO自行控制,排队依次执行,不能过分相信操作系统能把该问题解决好。 1 using System; 2 using System.Collections.Concurrent; 3 using System.Collections.Generic; 4 using System.Diagnostics; 5 using System.IO; 6 using Syste... 阅读全文
posted @ 2013-08-09 11:01 ^^! 阅读(663) 评论(1) 推荐(0) 编辑