问题标签 [pinning]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

Filter by
Sorted by
Tagged with
0 投票
6 回答
5804 浏览

在传递给非托管代码之前固定一个可更新结构?

我使用一些旧的 API,需要将结构的指针传递给异步运行的非托管代码。

换句话说,在我将结构指针传递给非托管代码后,非托管代码复制指针并立即返回。非托管代码可以在后台,在另一个线程中访问该结构。我无法控制在另一个线程中运行的非托管代码,也无法控制线程本身。

固定的 { } 语句不能用于固定,因为它不是为异步非托管固定而设计的。

GCHandle 只能固定引用,因此必须将结构装箱才能使用 GCHandle。我试过了,它有效。它的主要问题是您无法从托管代码更新结构。要更新一个结构,首先我们需要将它拆箱,然后更新,然后再装箱,但是……哎呀……又装箱了?!?这意味着内存中的前一个指针仍然指向旧的非最新结构,而新结构有另一个指针,这意味着我需要将新指针传递给非托管代码......不适用于我的案子。

如何在没有固定 {} 语句的情况下将结构固定在内存中,以便我可以从托管代码更新它而不更改它的指针?

谢谢。

编辑:

只是想...有没有办法固定包含结构的父对象,然后获取结构的指针不是容器对象?

0 投票
2 回答
1749 浏览

Windows 7、VB6、启动器应用程序和固定到任务栏

我们有一个应用程序,它有一个“启动器”应用程序,它有一个漂亮的 UI,而主应用程序在后台加载。这两个应用程序都是用 VB6 编写的(叹气)。

在 Windows 7 中,如果用户固定启动器程序,我们会在任务栏上看到两个不同的图标(一个用于主应用程序,然后固定图标用于启动器程序)。这看起来很奇怪。

我试过使用以下功能:http: //msdn.microsoft.com/en-us/library/dd378422%28VS.85%29.aspx到目前为止无济于事。

按照文档中的建议,在弹出任何 UI 之前,我都给出了相同的名称(Company.Product)。如果我在启动器应用程序运行时固定它,这可以正常工作。如果我为启动器固定可执行文件,我会得到两个图标。

关于如何修复它的任何想法,以便我可以让用户只需固定启动器 exe 并且一切都很好?

0 投票
6 回答
7917 浏览

c# 将表单固定到桌面

我正在尝试将表单固定到桌面,例如小工具侧边栏。

它不应受 Win+D 和显示桌面按钮的影响。

哪个是最好的方法?

我可以找到 Progman 并将我的表单的父级设置为此,但我读到这不是最好的方法。

0 投票
3 回答
1486 浏览

在 C# 中索引到任意等级的数组

我需要遍历任意等级的数组。这既适用于阅读又适用于写作,因此GetEnumerator不起作用。

Array.SetValue(object, int)不适用于多维数组。 Array.SetValue(object, params int[])将需要过多的算术来遍历多维空间。它还需要动态调用来绕过params签名的一部分。

我很想固定数组并用指针对其进行迭代,但我找不到任何说明多维数组保证是连续的文档。如果他们在维度的末尾有填充,那么这将不起作用。我也希望避免不安全的代码。

有没有一种简单的方法可以只使用一个索引来顺序寻址多维数组?

0 投票
1 回答
3682 浏览

带有按钮的 GridSplitter 用于固定类似行为

我希望以某种方式扩展 GridSplitter 以添加一个按钮,当单击该按钮时,该按钮会将控件展开或折叠到拆分器的指定侧之一。

我找到了适用于 Silverlight 4 的解决方案,但我需要它才能适用于 .NET 3.5 中的标准 WPF,这意味着 GridSplitter 没有实现 Shemesh 解决方案中使用的 Visual State Manager 内容。除了它不适用于 .NET 3.5 中的 WPF 之外,我认为 Shemesh 的解决方案可能正是我正在寻找的平滑动画过渡并在从折叠状态展开时记住最后展开的大小。

任何人都有在常规 WPF 中完成此操作的任何示例吗?

0 投票
3 回答
7307 浏览

在 Visual Studio 2010 中,什么是/如何设置热键以固定和取消固定活动窗格?

我经常运行测试并且需要固定测试结果窗格。在其他时间,我主要使用编写代码和编译 - 我更喜欢在编译时自动查看输出窗格(与测试结果窗格共享相同的空间)并在完成时折叠(即取消固定)。

我需要一个热键来快速将窗格切换到固定/取消固定状态。我怎样才能做到这一点?

0 投票
1 回答
691 浏览

固定内存OpenCL,有人成功使用过吗?

我在通话中使用了该CL_MEM_ALLOC_HOST_PTR标志clCreateBuffer,但 Compute Profiler 将我的所有“主机内存传输类型”显示为可分页。我在两种不同的内核设置中进行了尝试,但分析器不会显示我正在使用固定内存。

当内核开始使用固定内存时,它真的是随机的吗?是不是被什么东西束缚住了?我猜缓冲区的大小很重要。我尝试了一个大小为 10,000 个浮点数的缓冲区,但我仍然获得了 Pageable 内存。让我知道你们的想法。

0 投票
3 回答
7606 浏览

GCHandle,Marshal,托管和非托管内存:固定或不固定

正如汉斯·帕桑特 所愿这是我的场景。我有一个混合模式应用程序,其中本地代码在尊重性能的同时完成所有艰苦的工作,托管代码只负责 GUI。用户也将通过编写他们专有的 C# 代码参与其中。我有用于本机类的 C++,用于 GUI 和用户代码的 C#,以及用于介于两者之间的包装类的 C++/Cli。在我所有的 C++ 类中,有一个会执行 %90 的计算,并且每次都创建一个不同的参数。我们称之为 NativeClass。有大约。这个 NativeClass 的 2000 个实例,我必须在计算之前找到与某个参数相关的正确实例。所以我为此设计了一个 hash_map,参数是哈希码。当我得到一个参数时,我在 hash_map 中寻找正确的实例,我找到它并调用它的一些方法。
当用户通过编写 C# 代码参与计算时,该类通过回调执行这些代码。这是微不足道的,但有时我需要一些有关用户构建的 .Net 类的信息。所以我需要以某种方式将特定的 ManagedClass 附加到 NativeClass。我的第一个解决方案是使用 GChandle.Alloc() 并传输句柄地址。但是有一些关于 GC 的担忧是它不会正确地完成它的工作。Hans 推荐 Marshal.AllocCoTaskMem() 和 Marshal.StructureToPtr() 在非托管内存中分配托管对象,但我相信这对值类型类或结构有效。参考课程怎么样?如何传递对 NativeClass 的引用,同时防止它们被 GC 收集并同时使 GC 正常工作?

这是一些示例代码:

很抱歉,它太长了,仍然不清楚。

0 投票
1 回答
2777 浏览

在 C# 中手动取消固定字节 []?

在下面的代码中,似乎 client.Connect.Receive 永久固定“byte []结果”,导致内存永远不会被释放(因为它总是固定的)。我正在寻找一种方法来告诉 C# 结果在 this.OnReceive 中使用后不再需要固定,但我找不到执行此操作的内置函数或关键字。

有谁知道我如何让 C# 取消固定 byte[] 数组?(这是我的 C# 应用程序中内存泄漏的来源之一)

0 投票
3 回答
1832 浏览

我需要固定匿名代表吗?

我正在从 C# 应用程序调用 CopyFileEx,并将匿名委托传递给 LPPROGRESS_ROUTINE 参数,以便获取有关文件复制进度的通知。

我的问题是,是否需要固定匿名代表以及为什么(或为什么不)。

此外,如果出现以下情况,答案是否会改变:

  1. CopyFileEx 没有阻塞。
  2. 如果我通过了一个非匿名的代表。

谢谢!