相关疑难解决方法(0)

如何动态扩展内存映射文件

我已经使用C#来解决以下要求.. - 创建一个可以快速接收大量数据的应用程序 - 您必须能够分析收到的数据,同时传入更多数据. - 使用尽可能少的CPU和磁盘

我对算法的想法是......

SIZE = 10MB
Create a mmf with the size of SIZE
On data recived:
  if data can't fit mmf: increase mmf.size by SIZE
  write the data to mmf
Run Code Online (Sandbox Code Playgroud)

- >当使用前一个"房间/空间"时,光盘上的大小增加了10MB的块.

如何在C#中"通过SIZE增加mmf.size"?我已经找到了很多关于创建mmfs和视图的简单示例,但是我看到的唯一的地方(链接)实际上增加了mmfs区域的代码使用了无法编译的代码.任何帮助都将受到极大的关注.

编辑这会导致异常:

private void IncreaseFileSize()
{
    int theNewMax = this.currentMax + INCREMENT_SIZE;
    this.currentMax = theNewMax;

    this.mmf.Dispose();

    this.mmf = MemoryMappedFile.CreateFromFile(this.FileName, FileMode.Create, "MyMMF", theNewMax);
    this.view = mmf.CreateViewAccessor(0, theNewMax);            
}
Run Code Online (Sandbox Code Playgroud)

抛出此异常:进程无法访问文件'C:\ Users\moberg\Documents\data.bin',因为它正由另一个进程使用.

c# .net-4.0 memory-mapped-files

27
推荐指数
2
解决办法
1万
查看次数

Windows:调整共享内存大小

当我在Windows上创建共享内存段(如CreateFileMapping(INVALID_HANDLE_VALUE, ...))时,除了创建更大的段并复制数据之外,还有什么方法可以调整它的大小吗?

我在MSDN中读过文件映射有一个固定的大小,但是有可能通过某种方式在同一个内存上进行新的映射吗?就像在Linux中,您可以使用shm_open(),然后ftruncate()mmap()它再次.

windows shared-memory

7
推荐指数
1
解决办法
2614
查看次数

如何扩展内存映射文件的长度?

在Delphi 7中,我使用CreateFileMapping打开一个文件,然后使用MapViewOfFile获取指针.

如何扩展内存并在内存中添加一些字符并将其保存到该文件中?

我已经用适当的模式(fmOpenReadWrite,PAGE_READWRITE)打开了文件,如果我覆盖了字符,它会被保存到文件中,但我需要在文件中间添加额外的值.

delphi winapi memory-mapped-files

4
推荐指数
1
解决办法
2351
查看次数