Page 1 of 1

Windows Application vs Windows Form Application

Posted: Fri Jan 25, 2019 8:27 pm
by 4lch4_ExtraTxt
In a recent blog post Alex talked about how to create a notepad-esque application using PowerShell and the SAPIENHost object.

We're looking into building an application just like this for our service desk and I'm wondering, what are the benefits are of doing this over using a Forms project with a RichTextBox anchored and a MenuStrip?

Re: Windows Application vs Windows Form Application

Posted: Sat Jan 26, 2019 1:53 am
by Alexander Riedel
That really depends on your use case. The blog post illustrates a sample, it is far from complete. For example the loop at the end sleeps a second between processing commands. So if you were to click really rapidly on three different topics only the last one would be executed.
In a real application you would use some type of queue for the commands. We are still building this out, but I'll give you some pro and cons.

Windows app with SAPIENHost:
Pro:
- UI and PowerShell on separate threads means UI remains responsive while Powershell processes a length statement
- Future features will allow easier thread control on PowerShell code as well as swapping out views during runtime (no, no timeline for that)
- The SAPIENHost has preset methods for file open, save as, select folder etc dialog. (Document in a soon to come blog post)

Con:
- You cannot currently debug this in the debugger. It doesn't know to create a window to show the UI and output.
- This will only run when packaged as an exe. You script will not run standalone as a PowerShell Script

Windows Forms project
Pro:
- You can debug the code in our debugger
- The script runs standalone and/or packaged
- You have control over additional application events, such as resize, close etc.
- You can add buttons and additional controls to your UI if needed

Con:
- UI and PowerShell run on the same thread. Depending on your code that may make your UI unresponsive while
longer PowerShell statements run

That's just what I can think of on top of my head. The app model is new. Which also means I am more likely to add cool new things :D