gpt4 book ai didi

c# - 跟踪内存中的文本字符串

转载 作者:行者123 更新时间:2023-11-30 03:57:16 26 4
gpt4 key购买 nike

我有一个程序可以从内存中读取另一个程序的某些信息。我正在监视的程序基本上输出不断增加的文本量。我希望我的程序在其 UI 中复制此文本。在语法方面,对所有这些进行编码都很好,但考虑到文本在内存中的行为,我正在努力解决如何从逻辑上解决它。下面是我在内存中找到的信息,以及字符串的行为方式。

这是我掌握的信息:

  1. 指向字符串段开始的内存指针
  2. 指向写入的最后一个字节之后的字节的内存指针
  3. 一个指向 int 的内存指针,告诉我们有多少字节,是上面的两个

现在我最初做的是存储我读取了多少字节,然后使用每 2 秒触发一次的计时器,只读取我上次读取和结束之间的字节(正如指针 3 所暗示的那样)。

上述方法在一段随机时间后崩溃,因为在写入随机数量的字节后,字符串段实际上换行并再次从顶部开始写入(指针 1 指向的位置),覆盖了那里的内容前。发生这种情况时,指针 2 和 3 会更新,所以这很好,但我仍然无法弄清楚应该如何解决它。

我考虑过这种潜在的方法,但发现它是错误的:轮询时,在进行任何其他计算之前,检查到目前为止我读取的字节数是否大于字节数如图3,如果是,则将读取的字节数设置为0,重新从头开始。这种方法的问题是我可能会错过字符串段底部的某些内容,如果在底部写了一些内容,那么在我有机会发现它之前,很快就会写入另一个内容使字符串换行。

如有任何想法、见解提示或解决方案,我们将不胜感激。

最佳答案

最简单的做法是让Reader 进程每次读取共享内存的全部内容。然后在 UI 中显示整个文本。不需要“光标”。

下一个最简单的事情是读取共享内存的全部内容,但让 Reader 进程保留它读取的最后一堆文本的拷贝。然后在每次读取之后,它将文本与缓存文本进行比较以确定是否有任何变化。仍然不需要游标。

如果可能,我建议使用更强大的方式在进程之间共享数据。最终,您将在同步这两个进程时遇到问题。最后,您将编写一个进程间通信框架。我认为进程间消息队列的一些简单实现将是此类应用程序的理想选择。

关于c# - 跟踪内存中的文本字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28098469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com