我有两个.NET应用程序通过命名管道相互通信.第一次通过时一切都很好,但是在发送第一条消息之后,服务器将再次监听,该WaitForConnection()
方法抛出一条System.IO.Exception
消息管道已损坏.
为什么我在这里得到这个例外?这是我第一次使用管道,但类似的模式在过去使用套接字对我有用.
代码啊!
服务器:
using System.IO.Pipes;
static void main()
{
var pipe = new NamedPipeServerStream("pipename", PipeDirection.In);
while (true)
{
pipe.Listen();
string str = new StreamReader(pipe).ReadToEnd();
Console.Write("{0}", str);
}
}
Run Code Online (Sandbox Code Playgroud)
客户:
public void sendDownPipe(string str)
{
using (var pipe = new NamedPipeClientStream(".", "pipename", PipeDirection.Out))
{
using (var stream = new StreamWriter(pipe))
{
stream.Write(str);
}
}
}
Run Code Online (Sandbox Code Playgroud)
对sendDownPipe的第一次调用让服务器打印我发送的消息就好了,但是当它再循环回来再次监听时,它就会大便.
我需要将一些ASP LinkButtons实例化到ASP.NET MVC视图页面上.我尝试了一些东西,但我不能让它们出来.这是我最近的代码化身:aspx文件
<body>
<% using (Html.BeginForm("TitleDetail", "Movies", FormMethod.Post, new{runat="server"})) { %>
<ul>
<% foreach (var disc in Model.Title.tblDiscs) %>
<% { %>
<li>
<asp:LinkButton ID="Play">Link</asp:LinkButton>
</li>
<% } %>
</ul>
<% } %>
</body>
Run Code Online (Sandbox Code Playgroud)
它在Firefox中呈现的是我正在枚举的集合中每个成员的文本链接的一个实例,但它们不是超链接,只是文本.生成的HTML看起来像这样
<form action="/MyMovies/TitleDetail/239" method="post" runat="server">test title <br />
<ul>
<li>
<asp:LinkButton ID="Play">Link</asp:LinkButton>
</li>
<li>
<asp:LinkButton ID="Play">Link</asp:LinkButton>
</li>
<li>
<asp:LinkButton ID="Play">Link</asp:LinkButton>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
我尝试在每个asp:LinkButton标记中添加一个runat ="server"属性,但我得到一个运行时异常,控件只能放在带有runat ="server"属性的表单标记内.我认为我已经做过了,所以我真的不明白.任何人都可以向我解释我做错了什么,以及我需要做些什么来修复它以便LinkButtons实际上是链接的?
我希望能够以编程方式确定Vista系统退出待机状态的原因(S3).任何语言都可以,但.NET最好.我希望将此代码放入我正在处理的应用程序中.
我正在寻找诸如"媒体中心想要录制节目","用户输入唤醒机器","Windows更新计划运行"等原因.我搜索了Google,Bing和MSDN,但我只能找到与Windows Mobile相关的内容.
有人能指出我可以提供这些信息的功能或对象吗?
假设我有以下.NET类:
public class C
{
public void M()
{
....
}
}
Run Code Online (Sandbox Code Playgroud)
和
public class D
{
public void N()
{
....
}
}
Run Code Online (Sandbox Code Playgroud)
这两个类位于不同的程序集中的不同名称空间中.有没有办法让所有调用C.M()
自动"重定向" D.N()
?因此,调用方法就是调用它C.M
,但实际上,D.N
它实际上是被调用的,具有任何可能的参数C.M
.如果这种情况发生在类的所有实例化中,或仅针对一个特定对象,则无关紧要.
MS Research的Detours库可以为正常的Win32 DLL导出做一些非常类似的事情.我正在寻找一种方法来使用.NET方法.
我有两个应用程序,我想通过.NET 3.5上的命名管道进行通信.它是一个请求/响应范例,数据以XML格式传输,使我的生活更轻松.有一个监听器应用程序,以及一个将请求发布到管道的应用程序.我正在尝试使用双向管道来做到这一点.我遇到的问题是对StreamReader.ReadToEnd()的调用似乎没有返回.我该怎么做才能解决这个问题?
听众代码
public Class Listener
{
private void ThreadFunc()
{
var pipe = new NamedPipeServerStream("GuideSrv.Pipe",PipeDirection.InOut);
var instream = new StreamReader(pipe);
var outstream = new StreamWriter(pipe);
while (true)
{
pipe.WaitForConnection();
var response = ProcessPipeRequest(instream);
outstream.Write(response.ToString());
pipe.Disconnect();
}
}
private XDocument ProcessPipeRequest(StreamReader stream)
{
var msg_in = stream.ReadToEnd(); // << This call doesnt return
var xml_in = XDocument.Parse(msg_in);
// do some stuff here
return new XDocument(....);
}
}
Run Code Online (Sandbox Code Playgroud)
请求者代码
public XDocument doIt()
{
var xml = new XDocument(....);
using (var pipe …
Run Code Online (Sandbox Code Playgroud) .net ×2
.net-3.5 ×2
named-pipes ×2
asp.net-mvc ×1
c# ×1
detours ×1
hook ×1
runatserver ×1
standby ×1
webforms ×1