首页 / C# / 在C#应用程序之间流式传输数据
在C#应用程序之间流式传输数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了在C#应用程序之间流式传输数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1393字,纯文字阅读大概需要2分钟。
内容图文
我正在尝试在两个应用程序之间共享数据:第一个是从传感器连续获取数据,我要做的就是在将数据接收到另一个(WPF)应用程序(并绘制图形)时传输这些数据.
数据通过EventHandler接收,然后通过套接字传输,如下所示:
static TcpClient client = new TcpClient("localhost", 8181);
static double w, dba;
static void Write()
{
try
{
Stream s = client.GetStream();
StreamReader sr = new StreamReader(s);
StreamWriter sw = new StreamWriter(s);
sw.AutoFlush = true;
while (true)
{
String line = "W:" + w + "DB/A:" + dba;
sw.Write(line);
Console.WriteLine(sr.ReadLine());
}
s.Close();
}
finally
{
client.Close();
}
}
问题是,我需要将其放在单独的线程中吗? (正如我尝试的那样,未成功)因为这样,虽然eventHandler不断被触发并生成数据(将其存储到两个变量中),但是sw似乎无法继续.
抱歉,如果您的问题有点含糊,这是我第一次尝试使用分布式应用程序,所以我也有些困惑..任何建议或帮助都将不胜感激!
TIA
解决方法:
使用memory mapped files,它允许您直接在应用程序之间共享内存.这将比大多数其他方法快得多.
请参阅“非持久性内存映射文件”部分,其中详细介绍了如何通过字符串名称共享内存段.我在用于调试目的的应用程序中使用了此命令,它的速度足以使C#应用程序可以实时读取本机应用程序的内存.
如果您通过这种方法传输数据,请考虑一般如何传输数据.确定轮询频率(例如每100毫秒一次),并让应用程序A将数据写入内存映射文件.然后,让应用程序B读取该内存映射文件,并将其本地存储在集合中.这是您的传输.
因此,A基本上将相同的结构写入并重写到内存映射文件中,而B以给定的轮询速率读取该结构并将其轮询的内容存储在集合中.
内容总结
以上是互联网集市为您收集整理的在C#应用程序之间流式传输数据全部内容,希望文章能够帮你解决在C#应用程序之间流式传输数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。