问题标签 [task-switching]

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.

0 投票
4 回答
10733 浏览

windows - DirectX 应用程序中 Alt-Tab 支持的最佳实践?

在编写 DirectX 应用程序时,显然需要支持用户通过Alt-Tab以一种快速且无错误的方式暂停应用程序。确保这一点的最佳实践是什么?需要解决的问题包括:

  1. 检测应用程序何时被 alt-tabbed 退出以及何时返回的最佳方法。
  2. 当用户使用 alt-tabs 时会丢失哪些 DirectX 资源,以及解决此问题的最佳方法。
  3. 为了 alt-tab 支持,在应用程序架构中要做的主要事情和要避免的事情。
  4. 适用于上述内容的主要 DirectX 版本之间的任何显着差异。

有趣的技巧和陷阱也很值得一听。

0 投票
1 回答
453 浏览

c - ATmega 芯片上的安全“任务切换”

我开始在 atmega8 上的应用程序中实现类似于任务切换的功能。主要思想是有一个指向“当前屏幕”结构的指针。“当前屏幕”包含用于刷新屏幕、处理按钮和中断的处理程序。

不幸的是,我发现更改函数指针是在 2 次操作中完成的。current_screen->handle_signal(...);这意味着某些中断可能会在current_screen部分更改时尝试执行。由于处理精确的时序,我不能在更改期间仅禁用和重新启用中断。设置一个有关正在更改的处理程序的标志可以解决问题,因为我不太关心在任务更改过程中丢失一些中断(但是处理那些我不能错过的中断变得有点困难)。

我考虑在更改期间复制current_screencurrent_screen_old并设置一个标志,如下所示:

但我不是 100% 确定如果处理程序current_screen也想更改,这不包含其他一些技巧。

有没有更好的方法来解决它?一些好的成语?

0 投票
4 回答
4286 浏览

windows - 可以使用 Delphi 在 W7 中禁用任务切换键盘快捷键吗?

多年来,我的应用程序一直采用一种模式,客户可以“禁用对操作系统的访问”。显然,此功能违背了常规(至少就 Windows 而言),但在某些安装中,我的应用程序是唯一应该对机器操作员可见的程序,并且在这种情况下,这样的功能很有用。

我使用的技术是由几个“层”构建的:

  1. 隐藏任务栏和按钮。
  2. 禁用任务切换。
  3. 禁用我的主表单系统图标。

要禁用我使用的任务栏:

这工作得很好,在 W7 上看起来仍然很好。几年前研究如何禁用任务切换发现了“假装”您的应用程序是屏幕保护程序的唯一技术(除了将您的应用程序重命名为“explorer.exe”并启动它等可怕的事情):

毫不奇怪,这似乎在 W7 中没有效果(我认为它适用于 XP 等)。有谁知道另一种更好的方法来启用/禁用 Alt-Tab(和其他特殊的 Windows 键)工作?

0 投票
2 回答
325 浏览

c# - 无法为 Windows 窗体应用程序切换任务

我是 Visual Studio 和 C# 的新手。刚刚完成一个 Windows 窗体应用程序,但检测到以下错误。每当用户最小化/恢复它或切换到另一个任务时,程序都会死掉(显示无响应)。这个错误会阻止用户在运行这个程序时进行多任务处理,所以我真的很想修复 if。我想知道问题的可能原因是什么,以及如何解决这些问题。我真的很感激任何建议。谢谢!

0 投票
1 回答
372 浏览

rtos - RTOS 任务管理

如果一个任务试图交出处理器,实时操作系统需要执行哪些步骤来确保另一个任务有机会运行?

0 投票
1 回答
415 浏览

arm - 任务切换没有成功

当我只有一个任务时,这个任务切换代码在我的 s3c2440 板上运行良好,但是当创建两个或更多任务时,task0 将执行 task1 代码或 task 1 执行 task0 代码,我不知道为什么,任何帮助是需要 !

0 投票
2 回答
2150 浏览

operating-system - IRQ 后 Cortext-M3 上的任务切换崩溃

我为我的 ARM Cortex-M3 操作系统使用了 exokernel 模型。当一个任务想要从 UART 读取数据时,它会调用一个库函数,如果没有数据,该函数会调用 SVC 来阻止该任务(这会导致内核将该任务放入该 IRQ 的等待队列中并启用该 IRQ )。当中断发生时,所有等待它的任务都被移动到可运行队列中,并且再次禁用中断。

当我有一个固定的任务数组时,这个模型工作得很好,但现在我已经转移到链表以允许更多类型的等待队列(例如 IPC 消息)。更改中的某些内容导致崩溃。这是调试输出:

所以一切都很好,直到中断。实际输出取决于哪个UART先有数据,但模式是一样的:当中断发生时,当未阻塞的任务切换到第二次时发生故障。

这是相关的代码位。组装垫片:

和 C 函数:

SVC、SysTick 和 PendSV 的优先级分别为 29、30 和 31。

该故障是 INVPC 类型的使用故障,这意味着使用了错误类型的 EXC_RETURN 值。我检查了一下,每次都是 0xfffffffd。

有什么建议么?我应该在哪里寻找?

0 投票
2 回答
2203 浏览

time - 在 Vxworks 中获取系统时间

除了tickGet()和tickAnnounce之外,还有什么方法可以在VxWorks中获取系统时间?我想测量指定任务的任务切换之间的时间,但我认为 tickGet() 的精度不够好,因为 taskSwitchHookAdd 函数开头和结尾的两个 tickGet() 值始终相同!

0 投票
1 回答
728 浏览

background - 防止敏感信息出现在任务切换器中 - Apple 代码不起作用 - iOS 8 故障?

本文档:Preventing Sensitive Information From Appearing In The Task Switcher描述了一种在 applicationDidEnterBackground 中显示视图控制器的方法,以便在任务切换器中隐藏关键信息:

然而,在 iOS 8 中,这个确切的代码不起作用,并且非常简单、普通的黑色视图控制器直到应用程序再次激活后才会显示。任务切换器显示敏感信息,没有任何隐藏。这段代码中没有动画,所以我无法理解 - 为什么会这样?

0 投票
1 回答
211 浏览

c# - 窗口切换需要VisualStudio调试

关于我首先制作的一些背景知识。它是一个基于 C# 的启动程序,允许在主要的家庭影院媒体播放器(在我的例子中是 Plex、MediaPortal 和 Kodi)之间轻松切换,以便它们都可以用于各自的优点(Plex 用于下载内容,MediaPortal 用于电视录音和直播电视,以及其他所有内容的 Kodi,通常是流媒体)。
这些应用程序使用 pssuspend 暂停,这意味着它们可以同时保持打开状态,这对于速度较慢的计算机非常有用。

用户按下一个按钮(在他们的遥控器上)切换回启动器以选择另一个应用程序。

我几乎处于可用版本,但我已经有一段时间了,我已经缩小了范围。

如果我的启动器切换到应用程序(使用下面提到的方法),我无法切换回我的启动器进程。

在以下情况下发生:

  • VisualStudio 未调试或“Visual Studio 托管进程”(进程的 vshost 版本)运行。
  • 键盘/远程输入已应用于正在切换到的应用程序
    • 即:如果我向下移动到切换到的应用程序的任何位置,我可以很好地返回启动器,但是一旦我按下应用程序中的任何其他内容,我就无法切换出去。
  • 从启动器切换到切换的应用程序,而不是切换到它。

在所有其他时间,一切都按预期工作。

要切换,我目前正在使用SwitchToThisWindow(IntPtr hWnd, bool fAltTab)(来自http://www.pinvoke.net/default.aspx/user32/SwitchToThisWindow.html)。我也使用过Microsoft.VisualBasic.Interaction.AppActivate(来自http://msdn.microsoft.com/en-us/library/x9784w8e(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1)。

这两个都有相同的结果。

我已经确认的事情与问题无关:

  • pssuspend:如果我在切换回启动器之前没有暂停应用程序就运行,也会发生同样的事情
  • 操作系统和计算机:我在 3 台计算机上出现同样的问题,我的 Windows 8 安装和两台 Windows 7 安装
  • 侦听器返回主屏幕:这是使用来自 EventGhost 的 UDP 广播并执行其他所有需要完成的操作,例如更新启动器上的界面,只是不切换到启动器
  • 在本地机器上编译:我最初认为这有帮助,但这只是因为上述情况。只要打开了 vshost 进程,在我的 Windows 8 机器上编译的版本就可以在 Windows 7 上正常工作。我没有在任何其他系统上尝试过。
    • 以管理员身份运行没有效果

不应该成为问题但应该注意以防万一的是,启动器的前端都使用 CefSharp(CEF 是 Chrome 浏览器的集成版本)。尽管在添加此问题之前就出现了问题。

我的潜在想法:

  • 由于 中提到的事情AppActivate,我意识到 UIPermission 级别可能很重要,但是手动将其设置为完全信任不会产生任何变化。
    我还在 VisualStudio 中意识到,“安全”的属性设置为使用“OneClick 安全”设置,并且在“这是一个完全信任的应用程序”选项上。这对我来说很有意义,因为调试器会给它这些提升的权限,但大概这应该在没有调试运行的情况下工作。

我的应用程序在上下文中切换的一些代码:

希望有人有一些想法或过去有过类似的问题。
如果您需要任何其他信息或源代码,请告诉我。