Re: Window Form conversion
John Warner <[email protected]>
| Newsgroups | gmane.comp.windows.devel.dotnet.advanced |
|---|---|
| Organization | John Warner |
| Message-ID | <00c801c93394$18d88830$3d02a8c0@Pluto> |
I haven't looked at this specifically, but can't you put the main thread to sleep aside from just spawned threads? If you need to halt your code until the user hits a key I would want to do something like that rather then a do loop of DoEvents(). I think the reason this eats so much CPU is all the stack work that is going on with DoEvents, you are in a tight loop forcing Windows to do a lot of pushing and popping even if there are no messages pending. On an aside, what is Fujitsu Cobol like in the .net environment? I ask as someone here has suggested it as a possible solution to a problem with so data from a mainframe. John Warner > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[email protected]] On Behalf Of > Dave Vorgang > Sent: Tuesday, October 21, 2008 11:33 AM > To: [email protected] > Subject: [ADVANCED-DOTNET] Window Form conversion > > > Hi All, > > I have just began working on this project for converting our > existing HP3000 Vplus screens to use Fujitsu Cobol.Net on > backend and use .Net for the forms. > > What I plan to do is create routines to emulate the Vplus > intrinsics. For example, I have this routine to display the form: > > Private WithEvents _VFormFile As VplusBaseScreen.BaseFormMain > > Public Function VshowForm(ByVal comArea As > ComAreaDefinition) As Boolean > _VFormFile.LoadScreen(_CurrentScreen) > _VFormFile.Show() > End Function > > > Then, this routine would perform the Vreadfields which > basically blocks execution of my application until _KeyEntered = True > > Public Function VreadFields(ByVal comArea As > ComAreaDefinition) As Boolean > _VFormFile.Focus() > _KeyEntered = False > Do Until _KeyEntered > System.Windows.Forms.Application.DoEvents() > Loop > > End Function > > Then, the form will raise events and set _KeyEntered = True > when there is user interaction and the main process will > catch those events like this: > Private Sub _VFormFile_LastKeyPressed(ByVal key As > Integer) Handles _VFormFile.LastKeyPressed > _KeyEntered = True > RaiseEvent LastKeyPressed(key) > End Sub > The above routine just raises the event back to its caller. > > This approach actually works but the Do Loop take 25% of the cpu. > > So, my question is: Is there a better way to accomplish what > I'm trying to do? Can/How would I place this on a different > thread (if that's a way I should do it). > > > Thanks, > > > Dave Vorgang > Senior Programmer / Analyst > Medford School District - Information Technology > (541) 842-1021 > mailto:[email protected]<BLOCKED::mailto:Dave.Vor [email protected]> =================================== View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives =================================== View archives and manage your subscription(s) at http://peach.ease.lsoft.com/archives