I would like to start an background timer in METRO app when my app goes to suspended state. Is there any way I could do this. According to msdn site " If an app does not return from the suspending event within 5 seconds, Windows assumes that the app has stopped responding and terminates it."
In the above case I will not be able to do any tasks with my timer. Please let me know how can I spawn the timer in background when my application goes to suspended state. I am using WinJS for coding.
You likely need to use the background task API:
http://blogs.msdn.com/b/windowsappdev/archive/2012/05/24/being-productive-in-the-background-background-tasks.aspx
You can both kick off a timer for the background task, and declare in your manifest an interval for the work.
If you don't want the work to happen while you are suspended a set interval timer will work, and will fire at the correct interval when you do come out of the suspended state.
I think I've read about something like this before. Exactly what you want is not possible, because after an app is suspended its code stops running, so it cannot run its own timer in the background while suspended. However you should be able to get the same sort of effect if on the suspend event, you save the system time that the app is closing down to e.g. isolated storage/settings, then on the reactivation event you can get this value if it exists, and from there calculate how long the app has been in suspension by comparing the current time against the stored time
Related
I am writing a program (in Microsoft Visual Basic) to control a remote instrument (an XY axis microscope stage). As an example, the user must initially calibrate the stage by clicking a GUI button. It takes some time to accomplish the calibration process and I do not want to freeze the main GUI, so I execute the call on a background thread, as follows:
Call New Thread(AddressOf CALIBRATE_STAGE) With {.IsBackground = True}.Start()
So that works well, but we can imagine that for some reason, the user might need to halt the calibration before it is completed. The halt command must originate from a button on the GUI but it cannot be run from the main thread, or a HUGE instability results. (Basically, a program crash, probably because the sub thread was incorrectly managed. The only fix is to completely reboot the computer.)
I think what I need to do is something like this pseudo-code:
Press HALT button on GUI
Execute the STAGE HALT command on the same sub-thread where the CALIBRATE_STAGE command was launched
Once the stage is halted, properly abort the sub thread
Trouble is, I do not know how to do acquire the specific sub-thread on which CALIBRATE_STAGE is running. I do know its ThreadID, but given that integer, how do I launch a new process on that thread? Does anyone have some ideas?
Or maybe someone knows this idea of mine will not work and has a better solution?
I am making a vim-style "window manager" that takes text input, much like Alfred or Spotlight in Mavericks (in a floating panel).
The problem I'm having is when I call activateWithOptions: on a running application it steals focus from my window. I was hoping the problem would be solved by simply bring my app to the foreground again, however it seems the activation is running on a separate thread, and I end up activating my app before the original app gets activated.
I have tried reactivating when I receive NSWorkspaceDidActivateApplicationNotification, but that doesn't work either.
Ideally I'd like to pause execution until the application is focused for multiple reasons, since that would be the window I manipulate further.
Does anyone have any suggestions?
I want to be able to restart the app when coming back from background. So if the user selects the app again it should start as if it were the first time it's open. I've been googling but couldn't find a way of doing this.
I was thinking in just add the main view of the app in applicationWillEnterForeground, but It would be great if I can deallocate resources.
You can't restart an app. What you can do is disable background support, so your app always completely terminates when closing.
"...you can explicitly opt out of the
background execution model by adding
the UIApplicationExitsOnSuspend key to
your application’s Info.plist file and
setting its value to YES."
Source: Opting Out of Background Execution.
I have an issue with WindowsHookEx in vb.net. If my pc is overloaded especially from 3D rendering, windows automatically disconnects my keyboard hook and my hotkeys stop working. I searched around and it seems that there is no way to detect whether a hook is active or disconnected. So I tried this method presented by "moodforaday"
Is it possible to detect when a low-level keyboard hook has been automatically disconnected by Windows?
hook-has-been-automatically-d
He states that using GetLastInputInfo periodically and store GetLastInputInfo to another variable when a key is used and compare the results. If the tick is much newer than your older variable then its likely that its disconnected. Its a great method but the ticks can go up from other things like the mouse. In my Hook class there is no Mouse hook therefore I cannot store a variable of the tick count when the mouse is moved. So now I ended up having it create a new instance of the hook class and hook again. It checks every second if the stored tick is older than new tick by 10000 ticks.
Is it alright to keep creating new instances of Hooks? It will keep Hooking/Unhooking constantly and I'm wondering if that is going to be a problem for Windows.
Also if anyone has another method to detect if a hook is disconnected please let me know would fix this whole hassle.
Do your 3D rendering in a background thread. Use Control.Invoke only for code where you directly access UI controls.
Alternately, you could split the rendering into very small pieces and post them to yourself as messages, to be handled on the main thread. This way you will be able to handle both internal and external messages.
In both cases, your application will be responding in a timely fashion, Windows will have no reason to consider it non-responding, and your keyboard shortcuts will stay in place.
Can a WinRT app continue to run while Screen Off?
I know that a WinRT application can create a Background Task that periodically executes even when the application is not running. Handy, but not what I am asking. What I am asking is, when the user clicks the power button and invokes Connected Standby, is there anything an app can do to remain active. Can it ask for some special capability?
Example - in Windows Phone there is a handy Running and Walking app that keeps track of "where you are" while it is running - then tallies your distances, etc. Even when the screen is off! Turn the screen on and the "where was I" map is up-to-date. Is this type of application possible in WinRT?
I've been looking into the same thing recently, and unfortunately it seems that what you want to do isn't possible with WinRT.
Why don't you use Background task to simulate what you are trying to achieve. When the user starts the app again, you could have the info populated to the latest data by looking at the store where the background process updated. Just a thought.