C# 反射,进程控制间相互控制

C#高级编程第七版_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
喜欢此文档的还喜欢
C#高级编程第七版
选​填​,​简​要​介​绍​文​档​的​主​要​内​容​,​方​便​文​档​被​更​多​人​浏​览​和​下​载​。
阅读已结束,如果下载本文需要使用
想免费下载本文?
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢C#如何控制方法的执行时间,超时则强制退出方法执行 - 为程序员服务
为程序员服务
C#如何控制方法的执行时间,超时则强制退出方法执行
有时候我们需要控制方法的执行时间,如果超时则强制退出。
要控制执行时间,我们必须使用异步模式,在另外一个线程中执行方法,如果超时,则抛出异常终止线程执行。
如下实现的方法:
class Program
static void Main(string[] args)
//try the five second method with a 6 second timeout
CallWithTimeout(FiveSecondMethod, 6000);
//try the five second method with a 4 second timeout
//this will throw a timeout exception
CallWithTimeout(FiveSecondMethod, 4000);
static void FiveSecondMethod()
Thread.Sleep(5000);
static void CallWithTimeout(Action action, int timeoutMilliseconds)
Thread threadToKill =
Action wrappedAction = () =&
threadToKill = Thread.CurrentT
IAsyncResult result = wrappedAction.BeginInvoke(null, null);
if (result.AsyncWaitHandle.WaitOne(timeoutMilliseconds))
wrappedAction.EndInvoke(result);
threadToKill.Abort();
throw new TimeoutException();
上例中使用异步执行委托的方式实现,使用WaitHandle的WaitOne方法来计算时间超时。
您可能的代码
相关聚客文章
相关专栏文章您当前位置:&&&&&&&&&
售前咨询热线
C#中用NamedPipe进程间通信
大势至公司网络管理软件、公司网管必备软件列表
C#中用NamedPipe进程间通信
本文只是一个测试例子,核心代码是kernel32.dll中的一组windows api函数,这里不深入研究,代码都在codeproject上。/KB/threads/dotnetnamedpipespart1.aspx测试效果如下,可以做到aspx和给console app发送消息后得到反馈:console app为服务器端代码如下using Susing AppModule.InterProcessCusing AppModule.NamedPusing System.Tnamespace Server{
class Program
//**c#中用namedpipe进程间通信
//**组件代码来自codeproject
//**/KB/threads/dotnetnamedpipespart1.aspx
//**下载上面链接中的代码,编译AppModule.InterProcessComm和AppModule.NamedPipes两个dll
//**引用这两个dll到本例中,运行如下代码作为服务器端测试
//**测试代码by jinjazz(因为原作者的两个测试程序比较复杂,这里简化后供大家参考)
static void Main(string[] args)
ServerPipeConnection PipeConnection = new ServerPipeConnection(&np-test-by-jinjazz&, 512, 512, 5000, false);
Console.WriteLine(&listening..&);
while (true)
PipeConnection.Disconnect();
PipeConnection.Connect();
string request = PipeConnection.Read();
if (!string.IsNullOrEmpty(request))
Console.WriteLine(&get:& + request);
PipeConnection.Write(&get:& + request);
if (request.ToLower() == &break&)
catch (Exception ex)
Console.WriteLine(ex.Message);
PipeConnection.Dispose();
Console.Write(&press any key to exit..&);
Console.Read();
C#中用NamedPipe进程间通信(2)
客户端的aspx代码如下using Susing System.Wusing AppModule.InterProcessCusing AppModule.NamedPpublic partial class _Default : System.Web.UI.Page{
protected void Page_Load(object sender, EventArgs e)
Response.Write(SendRequest(&测试asdf&));
/// &summary&
/// 测试namepiped客户端
/// &/summary&
/// &param name=&request&&发送命令&/param&
/// &returns&返回数据&/returns&
string SendRequest(string request)
string response=&&;
IInterProcessConnection clientConnection =
clientConnection = new ClientPipeConnection(&np-test-by-jinjazz&, &.&);
clientConnection.Connect();
clientConnection.Write(request);
response=clientConnection.Read();
clientConnection.Close();
catch (Exception ex)
clientConnection.Dispose();
response = ex.M
}}测试环境为windows vista和windows2003
聚生网管官网,上网行为监管,局域网计算机监控,局域网防止arp攻击,局域网流量监控,只让特定QQ号登录
大势至公司网络管理产品:
1、,是国内最早、最专业的局域网监控软件、上网行为控制系统,可以有效管理公司局域网电脑上网行为,有效屏蔽迅雷下载、禁止迅雷上传,禁止pps上传、禁止看qq直播、禁止局域网玩游戏、禁止登录QQ游戏大厅、禁止员工炒股、限制上班看电影、进行局域网带宽限制、控制打开网页、禁止局域网网购、监控邮件内容、监控邮件附件、记录论坛发帖留言、防ARP攻击、查找局域网手机、禁止手机接入公司局域网、禁止私自安装无线路由器上网、防止无线局域网蹭网等;
2、,专业的上网行为管理服务器、比上网行为管理路由器、上网管理路由器更强大,可以有效禁止电脑游戏、屏蔽网页游戏、限制局域网看视频、禁止别人看视频、限制P2P软件使用、禁止快车下载、局域网控制迅雷下载、限制股票软件、禁止上班炒股行为、进行局域网流量监控、限制带宽软件,禁止员工网络购物、屏蔽购物网站、屏蔽网页视频网站,并且独创了&创新直连&监控模式,国内最快捷、最简单、最安全控制多网段电脑上网行为,监控效率和综合性能最强的硬件网络管理系统、上网行为管理系统。
3、,一款强大的USB端口控制系统,有效禁用USB端口使用、屏蔽U口、禁止电脑使用U盘、屏蔽优盘使用、禁用优盘,禁止移动硬盘使用、禁止手机存储卡使用,可以有效地屏蔽USB存储设备而不影响USB鼠标键盘和非USB设备的使用;同时,还可以禁止修改注册表、禁止修改组策略、禁止修改msconfig启动项、禁止修改计算机管理、禁止F8键进入安全模式、禁止U盘启动电脑、禁止光驱启动电脑;此外,还可以只允许电脑访问特定网站,只让打开特定程序、只让运行特定软件或者禁止运行某些程序、禁止访问某些网站等;
4、,是一款强大的共享文件服务器监控软件、服务器文件管理系统、服务器文件访问控制软件,最有效监控服务器共享文件的访问,详细记录修改服务器共享文件、删除服务器共享文件、复制服务器共享文件、剪切服务器共享文件或者打印服务器共享文件的行为,以及重命名共享文件等;同时,记录访问共享文件者的IP地址、MAC地址、主机名和域账号等信息,从而可以为网管员提供详细的服务器文件访问日志,便于加强服务器共享文件管理,保护单位无形资产和商业机密等;
5、,是一款专业的公司局域网接入管理软件、内网接入控制系统,可以有效防止非公司电脑访问公司局域网、禁止外部电脑访问公司局域网、限制外来电脑接入公司局域网、禁止手机接入公司局域网、禁止手机无线上网、限制平板电脑无线上网,检测局域网处于混杂模式的网卡,防止局域网抓包、防止局域网嗅探;同时,还可以查找局域网无线路由器,禁止无线路由器接入公司局域网,禁止无线路由器上网,禁止局域网启用代理,限制员工代理上网,禁止电脑安装代理软件为其他电脑提供代理上网服务等;
6、,是一款专门由于管理共享文件访问、进行共享文件访问权限设置的软件,通过在开启共享文件的电脑或服务器安装以后就可以为本地账号分配共享文件的不同访问权限,这样局域网用户访问共享文件的时候就只能&读取&共享文件而禁止拷贝共享文件的内容、禁止将共享文件另存为本地磁盘、禁止打印共享文件;同时,对共享文件加密后用户访问共享文件的时候将被限定在一个特定的共享文件列表框内访问操作,可以禁止拖拽共享文件、禁止拷贝共享文件、禁止剪切共享文件到访问者自己的电脑,从而也可以防止U盘复制共享文件、防止通过网盘上传共享文件、防止通过FTP上传共享文件以及防止通过QQ将共享文件发送到外面去,从而全面保护了共享文件的安全。
7、&,是一款专门监控FTP服务器文件访问操作日志的软件,可以详细记录局域网用户对FTP服务器文件的上传、下载、修改、删除、重命名等操作日志,可以记录访问者的FTP账户、IP地址、MAC地址和主机名等信息,并可以将FTP服务器文件操作日志导出为Excel格式,从而便于网管员实时审计局域网用户对FTP服务器文件上传和FTP服务器下载文件的情况,便于更好地保护FTP服务器的文件安全,保护单位无形资产和商业机密。
国内领先企业网络管理方案提供商——大势至(北京)软件工程有限公司简介:大势至公司是国内专业的企业上网管理软件、局域网网络管理软件提供商,公司核心产品:聚生网管监控软件(有效禁止局域网下载、禁止局域网玩游戏、禁止在线看视频、禁止上网软件、禁止局域网下载、局域网网速控制软件、局域网禁用随身wifi、禁止上网购物、限制局域网网购、局域网限速管理软件、局域网控制上网软件、局域网流量监控软件、局域网带宽分配软件、上网行为管理系统、计算机网络管理软件、最好用的网管软件、免费网管软件下载、计算机网络管理软件排行榜第一名……);大势至服务器共享文件管理软件(是一款专门监控服务器共享文件访问日志的软件,详细记录服务器共享文件的打开、读取、复制、修改、删除、剪切和重命名等操作,防止删除服务器共享文件、禁止复制服务器共享文件,分配共享文件访问权限,是一款专门的服务器文件管理软件、文件共享服务器监控软件、局域网共享文件设置软件、局域网共享文件管理软件……);大势至网络准入控制系统(一款专门的局域网接入管理软件,禁止外来电脑接入局域网、隔离局域网电脑、禁止电脑相互通讯、检测局域网无线路由器、检测局域网手机、防止蹭网、禁止局域网代理上网、防止网络嗅探、禁止修改MAC地址、禁止修改IP地址、绑定IP和MAC地址、禁止外来电脑上网、禁止外来电脑访问公司文件服务器、禁止访问共享文件、禁止非公司电脑接入公司局域网,实现全面的局域网网络接入控制和安全防范……);大势至电脑USB禁用软件(一款禁用U盘软件、电脑USB接口禁用软件、计算机USB端口禁用软件、微机USB屏蔽软件、禁用USB存储设备、禁用手机存储卡、禁止复制电脑文件到U盘、禁用360随身wifi、屏蔽随身wifi、禁止wifi共享、禁止修改注册表、禁止打开组策略、禁止U盘启动电脑、禁止光驱启动电脑、WIN7禁止安装软件、禁止电脑运行软件、禁止发邮件、禁止网盘上传文件、禁止QQ发文件、禁用光驱、只让电脑运行某个软件、禁止电脑上网、只让电脑打开某个网站、只让电脑运行某些程序等)。大势至四款核心局域网电脑管理软件可以协调配合,为企业提供全面的员工上网行为管理、电脑文件安全管理软件和商业机密保护,保障企业高效率、稳健运转!
京ICP备号 京公网安备c#控制写了一个List&Object&类型的返回函数,关于类反射的.如果你不懂,就不必往下看问题补充。_百度知道
c#控制写了一个List&Object&类型的返回函数,关于类反射的.如果你不懂,就不必往下看问题补充。
Collections.Reflection.Linq, null)).SetValue(using System,也是我要反射的类using System.Add(obj);object& i++)
Type t = objs[i]; objs = GetRefection(refe);
foreach (PropertyInfo pro in pros)
}}这是主程序的类using S
static void Main(string[] args)
Refection refe = new Refection();
}}我的问题是;namespace ConsoleApplication4{
class Refection
private string name.GetProperties().L i &lt.ToString();object& GetRefection(object obj)
List&lt, null); }
set { name =using S i++)
foreach (PropertyInfo pro in pros)
Type t =using Susing System.GetValue(objs[i];
return objs.GetProperties();
public string Age
get {using S 2.T i & objs = new List& }
set { age =
public string Name
get {object&gt.WriteLine(pro.Gusing Susing S
for (int i = 0.GetType();
PropertyInfo[] pros =namespace ConsoleApplication4{
public class Program
public static List& }
PropertyInfo[] pros =Object&gt.Collections:我想得到值分别是0011为什么最终变成了1111, i.G().GetType().T
for (int i = 0这是第一个类
提问者采纳
(), null), BindingF&#47.Add(obj); i &
objs, null, i++)
for (int i = 0; pros你的当然是1111
你在反射获取对象的时候 循环操作的时候操作的是同一个对象你必须在循环中 对对应的类型创建新的对象 然后加入List中的 才并非都引用同一个对象
public static List&
PropertyInfo[] pros = t.CreateI;object&加上这一句
foreach (PropertyInfo pro in pros)
Type t = obj.InvokeMember(&object&gt, objs = new List&lt.GetType(), null); &#47.GetProperties();
return objs.Length.SetValue(Refection&quot.ToString(); GetRefection(object obj)
List&object&gt
提问者评价
这是我要的答案.. 感谢..除此之外不说啥了~
其他类似问题
按默认排序
其他3条回答
}因为你这一句objsfor (int i = 0;######
foreach (PropertyInfo pro in pros)
}添加的是同一个对象; &#47.Add(obj);,你试着增加一个属性,所以都是11了; i &lt, null);Refection&quot, i,”他俩“的属性会指到同一个引用,然后从0到3循环.Add(obj).SetValue(obj, BindingFlags.ToString(), null.CreateInstance,第二次又把它属性弄成1, null), null,都是对这一个对象操作;&#47,第一次虽然令其属性为0; 2.InvokeMember(&quot
这是因为你的 public static List&object& GetRefection(object obj) 方法里面一直使用的对象是obj对象,而obj对象是引用类型的对象,关于引用类型和值类型的区别你可以自己去了解下,但我想说到这里你应该就能明白问题所在了,那就是你两次循环都是操作的obj对象所引用的内存,也就是两次循环修改的都是同一个对象,所以你放在List&object&集合中的其实是两个对同一个Refection对象obj的引用而已,并不是两个Refection对象的实例,如果想解决的话就要在循环中创建新的Refection对象填充进集合中去,这样的结果就是你需要的了。
其实我也懂,需要再次实例化。问题是这种类型如何实化。
参考资料:
原因很简单,就是你的给 GetRefection() 函数传递的参数是一个对象的引用,所以说,for循环里面,两次循环其实操作的是同一个对象的引用。一般使用list的时候 都应该是每new 一个object ,添加一次,像你那样其实两次都是同一个object。
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁

我要回帖

更多关于 进程控制 的文章

 

随机推荐