After spending 14 hours on this I think its time to share my woes and see if anyone has experienced this issue before.
Ill describe the issue and tests I have done to rule out certain things.
Ok so I have a WPF application which loads in data from an SQL database.
I am using DevExpress Components for datagrids, ribbons etc.. and FluentNhibernate to provide a session for database operations. I am also using log4net to log events to a textfile.
Using the application on my laptop with SQL Express 2008 works fine.. the application starts up, retrieves 1000 records and I can tab through the controls on the ribbon.
Now, I decided to demo the application to a third party and used remote login/sharing software online to share my desktop with the other person so as I could load the application on my laptop and they could view me using the application.
Now, the application takes approx 45 seconds to load... 30 seconds with a blank database where as, when im not sharing out my screen using the online software the application loads in about 7-10 seconds. As well as that, even using the controls in the application during the demo were very sticky, slow and unresponsive.
During the sharing session though however I was able to use other applications without any problems.. everything else worked fine.
But I cannot understand how my application works ok under normal conditions , even browsing the net at the same time etc... BUT totally fails to perform correctly when I am sharing a session with another user... the CPU usage shot up to 100% too at times when the application was trying to start up...
Please see below a list of 3rd party dlls I am using as references in my project.
DevExpress dlls
FluidKit
PixelLab.WPF
PixelLab.Common
Galasoft WPF Kit
FluentNHibernate
NHibernate
Nhibernate.ByteCode.Castle
Skype4ComLib
TXTEXTControl
log4net
LinqKit
All of these DLLs are in the output folder with the application dlls created from the class assemblys in the project. So when installed via an installer on a machine the dlls will be in the same application folder as the application file itself.
Many thanks
I saw something similar about a year ago with logmein. The performance is not the app its the graphics processing . WPF renders graphically in a completely different way then GDI winforms see around 2.3 and down msdn article. Many remote desktop application have trouble rendering this correctly particularly if you don't use the plug ins (say logmein). You didn't say what you were using but I would suggest trying a few different RDP options as there are many out there, and making sure your on the newest versions.
Yes, as bumle-bee-tuna points out, WPF will default to software rendering over Remote Desktop. Another way may be to screen share using Skype or similar. This means you'll be rendering the app locally but transmitting an image to the remote user. the app should work at full speed and the only lag the viewer will see will be introduced by the Skype network. I've used this technique many times to deliver presentations remotely and works well!
Related
I’m looking for a way to embed a single page style web application into an industrial pc that’s running TwinCAT 3 plc to control an automation system. The hmi on this system is already written in c# using the beckhoff ads dll. What I’m having trouble with is how to embed the server that’s reading and writing data to my plc instance and the web page front end into one application. I’m looking to use c# or python as those are the languages that I have experience in. I would like to be able to log into this webpage by the up address of the Pc and get a page on a phone or laptop that allows elements on the screen to be interacted with like buttons and a joystick style control for creating motion on the machine.
Which OS is the PLC running on? If WinCE, its a bit trickier. You'll need VS2008 to compile against the NET35CF for C#.
With a "full" version of windows, things become simpler - you can use whichever version of .NET will fit on the controller, or whichever version of Python supports the python ADS library.
After that, create your connections into the PLC as per the Beckhoff ADS examples when required by your web page.
Of course you will need to manage the web server accordingly. Some Beckhoff PLCs already use IIS for basic diagnostics, so you would have to set up an appropriate route to your page to avoid conflict.
After updating windows to version 1803 none of the WPF applications on a laptop (Intel hd 500 GPU) work properly anymore (start with a blank window or don't show the GUI at all). I've made a simple test app that only shows one button and it results in an empty window. If I turn off the hardware rendering (according to Software rendering mode - WPF), the application works as expected.
I've tried several versions of the GPU driver including the generic MS one, latest one, latest one recommended by the laptop manufacturer, older ones but all with the same result. The recovery point to the previous version is not available anymore.
The laptop is barely running existing applications so setting the registry not to use the hardware rendering for all the .net applications is not an option due to performance degradation.
Has anyone experienced anything similar, are any other solutions to solving this?
Thanks,
Tomislav
The issue happens because I'm using the laptop with the lid down (I connect remotely to it). This seems to put the GPU to sleep/power down state which messes up the applications that use GPU acceleration. Interestingly desktop and some applications run normally.
Adding a fake display solved the issue (https://forums.lenovo.com/t5/ThinkPad-X-Series-Laptops/Working-with-closed-lid/td-p/1623610, https://superuser.com/questions/1271344/fake-montitor-for-teamviewer-on-laptop-with-closed-lid).
I have also had this issue and have found that if you uninstall and delete the Intel Display Adapter, then let Windows automatically find the default, this issue is resolved.
I am trying to protect my wpf application with SmartAssembly. I have problem because exe created by SmartAssembly don't work propertly. When I run app I see white screen and app is not responding. Depending of configuration sometimes app is closing. Under some SA configurations application is not responding for about 2 minutes (durning that time it uses a lot of CPU and RAM). After 2 minutes it starts to response but without any navigations between views.
I tried many configurations (even without any protection selected), and so far couldn't make it work. In my opinion problem is in loading Prism modules because in reports I get many
Prism.Regions.Behaviors.RegionCreationException
MicrosoftPractices.Unity.ResolutionFailedException
Could you tell me how should i configure project to make it work?
Thanks in advance for help
I would like to get some suggestions for a project i am working on. Currently I have 12 computers joined to an AD domain using the same user to login to Windows 10 computers. I am trying to develop an app that will present a message and then log off the user at specified time. I actually have developed that app and for the most part it works. It even has the ability to allow an admin user to come over and change the time remaining. A new requirement has me a little stumped. The admin would like to login to a central computer and monitor the times of the 12 computers and be able to change the time from a central interface. So I am banging my head trying to brainstorm ideas. I decided to ask for help. Here is what I have come up with.
Client/Server App development. (would have to learn)
SQL table. Desktop app updates and pulls data (I would think that would be a lot of unnecessary traffic. Would have to determine how often that app Push/Pulls the data.
Update a local data file and have the Central Management push/pull to that file. Same idea as SQL?
Use a 3rd party app. (Costs and I also like to have flexibility and control)
Any suggestions would be great. I have no problem learning something new however this has unfortunately become a priority request so time management is important. For the most part I am looking for suggestions.
Thank you very much for your time. This is honestly my first "question post".
How to load an Excel application inside an .NET Windows client application?
The excel application should be hosted in windows form just a like any windows user control.
The loaded excel application will open a excel file created already.
Thanks
Microsoft released the source code for a solution called the DSOFramer (though they have since removed the solution). This solution works in some ways but introduces a lot of problems as well. If you think you have the skill and the automation approach posted on Codeproject doesn't meet your minimum requirements, then give it a shot. Our application is still utilizing the DSOFramer today, but it is really for integrated view only support.