|
Thanks Richard.
How can I increase the stack size? I use Visual Studio 2008 and this is a smart device VB.net project.
I don't find any specific setting in the project properties
|
|
|
|
|
I am not a VB expert so not sure what you would need to do. I guess Google is the place to look. But in reality, this exception is a warning that your application needs reworking in some way.
|
|
|
|
|
Hi Richard,
surely a StackOverflowException means something bad, for this reason I tried to reproduce the problem with few clean lines of code.
I managed to replicate the problem just with a Form, a Button and the code I posted.
This does not mean that the complete application would not benefit from a reworking (...) but it seems to me that in this situation the problem is in a single line of code.
Probably, as Eddy suggests, I should use another way to store and read the application settings.
|
|
|
|
|
steve_9496613 wrote: surely a StackOverflowException means something bad Yes, as I already explained it means you have used up all your local memory (stack space). If that is because you are reading huge amounts of data then that is the area that needs investigation. If that is not the reason (which is also possible) then more debugging may be required. In either case the only way to be sure is to use the debugger to see what is happening inside the application under real load.
|
|
|
|
|
Thank you Richard.
I'll try to dig deeper to find the reason because this is a loose cannon in my code.
|
|
|
|
|
It may just be that in an embedded/compact framework you do not have enough physical memory to provide the space that you would expect in a larger system.
|
|
|
|
|
To build on Richards' answer, might help to make the files smaller; cut them in chuncks before reading them. I assume you'll be importing them into a database?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Hi Eddy.
These files are created by the application and contain user programming.
They can be larger or smaller depending on what the user does.
When the user changes something, the file is updated.
While the application is running, there is no problem.
When the application is closed and restarted, settings are loaded from the file and here is the crash.
I load the XML file in a DataSet because I can read all with a line of code with ReadXml and then I copy the DataSet content in the different internal variables and structures; I don't use a real database.
To limit the file size and use more than one if one file is not enough could be a solution.
If ReadXml works fine in a desktop environment with full .NET, perhaps there is a bug in the .NET Compact Framework version of this function?
|
|
|
|
|
steve_9496613 wrote: I load the XML file in a DataSet because I can read all with a line of code with ReadXml and then I copy the DataSet content in the different internal variables and structures; I don't use a real database. You are using an export-format as a datastore; use a real database and the problem is gone.
steve_9496613 wrote: If ReadXml works fine in a desktop environment with full .NET, perhaps there is a bug in the .NET Compact Framework version of this function? Sure, maybe. Maybe there's some difference between the frameworks, simply because a device isn't as powerfull as a real desktop, with more limitations.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Eddy Vluggen wrote: You are using an export-format as a datastore; use a real database and the problem is gone.
You're right, I didn't use a real database because of my lack of knowledge about databases.
|
|
|
|
|
steve_9496613 wrote: You're right, I didn't use a real database because of my lack of knowledge about databases. Take your time and give it a try; it will not only benefit you in this project, but all the projects to come. If stuck, simply post the code here
I'd recommend SQLite, since you don't require a dedicated server or multi-user access. It's free, small and there's the benefit that you can copy the db to your desktop and edit its contents there.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Thanks for your advice Eddy, I'll give it a try.
I have already tried SQLite in C++ (Embarcadero C++Builder) but I was not really satisfied from what I managed to do...
I see that here there are some articles as "Using SQLite in C#/VB.Net" that seems to be a good point to start.
|
|
|
|
|
You're welcome
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
For online Course on .net Framework 4.5 using C# , Please Click here.
|
|
|
|
|
Hi everyone,
I have an application (esims) on my laptop that works normally until the point of displaying the reports.
The app is made in .Net Framework and at its requirements the programmers said that it needs the .Net Framework 2. Now we have Installed at work the same app on windows 7 and windows 10 OS's and works, but on this laptop even if it has Windows 10 Pro, .Net Framework 3.5 (that includes .Net 2 & 3) and .Net 4.8 installed right, the app starts, but when I go and I want to display some reports it gives me the following error:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.ObjectDisposedException: Cannot access a disposed object.
Object name: 'ReportViewer'.
at Microsoft.Reporting.WinForms.ReportViewer.get_CurrentReport()
at Microsoft.Reporting.WinForms.ReportViewer.Clear()
at Microsoft.Reporting.WinForms.ReportViewer.RefreshReport(Int32 targetPage, PostRenderArgs postRenderArgs)
at Microsoft.Reporting.WinForms.ReportViewer.RefreshReport()
at Universum_Client.ReportForms.frmPrev.YVA4YnrEuQZ(Object , EventArgs )
at System.EventHandler.Invoke(Object sender, EventArgs e)
at System.Windows.Forms.Form.OnLoad(EventArgs e)
at System.Windows.Forms.Form.OnCreateControl()
at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
at System.Windows.Forms.Control.CreateControl()
at System.Windows.Forms.Control.WmShowWindow(Message& m)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ContainerControl.WndProc(Message& m)
at System.Windows.Forms.Form.WmShowWindow(Message& m)
at System.Windows.Forms.Form.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9148 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll</h2>
eSims
Assembly Version: 1.0.7102.22332
Win32 Version: 1.0.7102.22332
<h2> CodeBase: file:///C:/Program%20Files%20(x86)/UAIC/eSIMS/eSims.exe</h2>
MessageBoxGC
Assembly Version: 1.0.6904.25481
Win32 Version: 1.0.7102.22332
<h2> CodeBase: file:///C:/Program%20Files%20(x86)/UAIC/eSIMS/eSims.exe</h2>
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll</h2>
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9147 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll</h2>
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll</h2>
Accessibility
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll</h2>
Universum_Library
Assembly Version: 1.0.7102.22323
Win32 Version: 1.0.7102.22332
<h2> CodeBase: file:///C:/Program%20Files%20(x86)/UAIC/eSIMS/eSims.exe</h2>
System.Runtime.Remoting
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Runtime.Remoting/2.0.0.0__b77a5c561934e089/System.Runtime.Remoting.dll</h2>
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll</h2>
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll</h2>
System.Data
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_32/System.Data/2.0.0.0__b77a5c561934e089/System.Data.dll</h2>
Microsoft.ReportViewer.WinForms
Assembly Version: 11.0.0.0
Win32 Version: 11.0.3442.2 ((SQL11_SP1_RS_Dev12-RTM).140611-0541 )
<h2> CodeBase: file:///C:/Program%20Files%20(x86)/UAIC/eSIMS/Microsoft.ReportViewer.WinForms.DLL</h2>
System.Core
Assembly Version: 3.5.0.0
Win32 Version: 3.5.30729.9135 built by: WinRelRS6
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll</h2>
Microsoft.ReportViewer.Common
Assembly Version: 11.0.0.0
Win32 Version: 11.0.3442.2 ((SQL11_SP1_RS_Dev12-RTM).140611-0541 )
<h2> CodeBase: file:///C:/Program%20Files%20(x86)/UAIC/eSIMS/Microsoft.ReportViewer.Common.DLL</h2>
System.Web.Services
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.9136 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Web.Services/2.0.0.0__b03f5f7f11d50a3a/System.Web.Services.dll</h2>
dy61duv6
Assembly Version: 11.0.0.0
Win32 Version: 2.0.50727.9147 (WinRelRS6.050727-9100)
<h2> CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll</h2>
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
Now I have made all possibile updates for windows and nothing changed.
P.S.: I'm not a programmer so, please I need a solution straightforward an easy to use or understand for me to replicate.
Let say that I'm only a network tehnician.
Thank you in advance.
|
|
|
|
|
That's not an error in the .NET Framework, but the application you are running. It is trying to access an object that has already been disposed - like accessing memory that's already freed.
S3TH_2019 wrote: Now I have made all possibile updates for windows and nothing changed. No update can correct a fault in the application. Ask the person who wrote it to take a look at it.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Hi Eddy,
Thank you for replying, if that is an error of application then how can my colleagues from work, that have similar pc's, with Win 10 Pro installed and this app (esims) work with it? Without having this trouble with this error?
|
|
|
|
|
Similar doens't matter; if there's an fault in the app, then it doens't matter how similar the other environments are.
They can work with it because their system is built like the programmer who wrote your app expects it to be. Doesn't mean the fault is with Windows, and the exception-message confirms that. In some circumstance, the app tries to access memory that it shouldn't, which is quite hard to do in .NET.
If you seriously think this is a bug in .NET, then it is as simple as reporting it to Microsoft. Still, you might want to Google the phrase "SQL is not broken".
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
That's not a bug in the .NET Framework.
This could also be a problem with timing or bad threading code. The apps works perfectly fine in most circumstances, but you happen to find the one circumstance where it fails.
The stack trace you posted suggests a problem where the report control is going out of scope when the rest of the code doesn't expect it. The form Universum_Client.ReportForms.frmPrev seems like it's loading the report but the form is destroyed before the control can load the report.
|
|
|
|
|
Trying to display my code in times table format but keeps coming out in a straight line
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TestLibary;
namespace ICA25
{
class Program
{
static void Main(string[] args)
{
string sTitle;
bool bExit = false;
sTitle = ("ICA 25 - Times table");
Console.WriteLine("{0,60}\n", sTitle);
do
{
{
int[,] iFinal;
int iNum = GetValue("Please enter the size (4-20) of the times table: ", 4, 20);
Console.Write("Here is the times table for that size: \n");
iFinal = GenerateTT(iNum);
DisplayTT(iFinal);
}
}
while ((YesNo("Would you like to do another? Y or N:") == "Y") && !bExit);
bExit = true;
}
static public int GetValue(string s, int iMin, int iMax)
{
int iNum;
Utilities.GetValue(out iNum, s, 4, 20);
return iNum;
}
static public int[,] GenerateTT(int iValue)
{
int[,] iNum = new int[iValue, iValue];
for (int iRow = 0; iRow < iNum.GetLength(0); iRow++)
{
for (int iCol = 0; iCol < iNum.GetLength(1); iCol++)
{
iNum[iRow, iCol] = (iCol) * (iRow);
}
}
return iNum;
}
static public void DisplayTT(int[,] iFinal)
{
for (int iRow = 0; iRow < iFinal.GetLength(0); iRow++)
{
{
for (int iCol = 0; iCol < iFinal.GetLength(1); iCol++)
{
Console.Write( iFinal[iRow, iCol]);
{
Console.WriteLine();
}
}
}
}
}
static public string YesNo(string sPrompt)
{
string stemp;
do
{
Console.Write("{0}", sPrompt);
stemp = Console.ReadLine().ToString().ToUpper();
if (stemp == "N")
{
Console.Write("Bye");
Console.ReadLine();
}
if (stemp != "Y" && stemp != "N")
{
Console.Write("\nPlease answer Y or N.");
}
}
while ((stemp != "Y") && (stemp != "N"));
return stemp;
}
}
}
|
|
|
|
|
Don't repost the same question in multiple forums.
|
|
|
|
|
To illustrate backtracking to a colleague, I wrote a small sudoku solver. To measure its performance I added a counter of how many attempts it makes to place a digit. (For the most difficult problem I have found until now, it makes more than 57 million attempts.)
What did not surprise me: Building for x86 or x64 does not affect execution time significantly; nothing in the code benefits from greater word size. The average time to place a digit and evaluate its validity takes about 11-12 ns. (If anything surprised me, it would be that it is that fast!). Building for "Any CPU" gave similar timings, which didn't surprise me either: dotNET does a JIT compilation to native code. This backtracking core makes no use of libraries or other "external" resources, nothing to slow it down by dotNET overhead.
Nor was I surprised to see that compiling for debug mode slowed down execution by a factor of approximately 2.5, to around 30 ns/attempt, for all three CPU alternatives. I don't know the details of what happens in debug mode, but assume that e.g. code optimization is more or less turned off.
Then comes the surprise:
I took the code home to my home machine. The CPU is a few years older (a 2014 vintage i7-5820K@3.3GHz), so I expected that it would be slower than my office PC (an i7-7700@3.6GHz). Not much! Less than 10%, for all three CPU alternatives in Debug mode. And for x86 and x64 in Debug mode.
But for "Any CPU", the loop time is about 31-32 ns per attempt regardless of whether I build in Release mode or Debug mode. How come? Why is the execution time cut by 60% at my office PC, but not at my home PC? Even at my home PC, it is cut by 60% when I build for x86/x64, it is only the "Any CPU" alternative that seems to insist on Release being just as slow as Debug.
Why is that?
I copied all the project files to my home computer, so all settings should be the same. I build for dotNET 4.7.1 on both machines.
There are two differences, though.
First: At home, I use the "Community" edition of VS2017, while at work I use VS2017 Professional. But if the philosophy is that "To get that optimized speed, you must pay for Visual Studio", why do I get the optimization for x86/x64 in the (free) Community version? Both VS installations are fully updated to 15.9.16.
Second: At home I still run Windows 7 (yes, I know, I know...). But how could the OS version affect a tight, CPU only, code loop that makes no external calls? And only if the code is compiled from a dotNET assembly, not for native x86/x64 code doing exactly the same thing?
Can there be anything in some initialization/configuration file (not in any project file) saying that optimizations should not be performed when compiling for Any CPU? In theory, it could even be in the JIT code generator in the dotNET runtime, but a factor of 2.5 is so large that I am more tempted to think that the optimization is done at a higher level - you don't have that much flexibility in the code generation phase (when the CPU architecture is given).
Is the culprit the OS or the Community version of VS? Or have I overlooked some essential factor?
|
|
|
|
|
Or maybe one of your computers favors background processing over foreground processing; or the swap space is too small; or the hdd versus ssd is too slow; or calculations are being offloaded to the GPU; or there are too many browser sessions open; or the L1 cache is smaller; or ...
The Master said, 'Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it.'
― Confucian Analects
|
|
|
|
|
Hi, I'm writing a small app for my own use to watch a certain folder and back it up to another location when files are created or amended.
I wrote the script for the file system watcher first in just the Powershell console, and this worked nicely.
Once I added it into my GUI (winforms) I discovered it would not work when activated from a button, and after a bit of investigation I can to realise that I would need to run it via Runspace.
I've written a couple of GUI scripts with runspaces so was confident I could do it (i'm not a programmer by profession, it's just a personal interest)
I've got it to work by firing the runspace job from the "start" button, but the issue I now face is that the button to stop the monitoring doesn't work.
I'm assuming because the Filesystem monitor is running in a separate Powershell session.
I get :
Unregister-Event : Event subscription with identifier 'FileCreated' does not exist.
At D:\Programming\PowerShell\.Current Projects\TAB-File Watcher\out\TABFileWatcher.ps1:84 char:5
+ Unregister-Event FileCreated
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Unregister-Event], ArgumentException
+ FullyQualifiedErrorId : INVALID_SOURCE_IDENTIFIER,Microsoft.PowerShell.Commands.UnregisterEventCommand
And when I run Get-EventSubscriber from VS Code terminal after closing the GUI, It does not display any Event subscriptions, BUT the event is clearly running as if I manually add or edit a file it copies it to the destination folder.
So my question is .. how do I access \ stop the event from a button which is not within the same Runspace ?
Or is there another (better) way of doing this ?
The relevant code is :
$RSscriptblock = {
$Output_RTB = $sync.RTB
$sourceDirectory = $sync.SD
$filter = $sync.SF
$destination = $sync.DES
$fsw = New-Object IO.FileSystemWatcher $sourceDirectory, $filter -Property @{
IncludeSubdirectories = $false
NotifyFilter = [IO.NotifyFilters]'FileName, LastWrite'
}
Register-ObjectEvent $fsw Created -SourceIdentifier FileCreated -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
$Output_RTB.SelectionColor = "Green"
$Output_RTB.AppendText("The file '$name' was $changeType at $timeStamp`r`n")
Copy-item -Force -Recurse $sourceDirectory -Destination $destination }
Register-ObjectEvent $fsw Changed -SourceIdentifier FileChanged -Action {
$name = $Event.SourceEventArgs.Name
$changeType = $Event.SourceEventArgs.ChangeType
$timeStamp = $Event.TimeGenerated
$Output_RTB.SelectionColor = "Green"
$Output_RTB.AppendText("The file '$name' was $changeType at $timeStamp`r`n")
Copy-item -Force -Recurse $sourceDirectory -Destination $destination }
$Output_RTB.SelectionColor = "Green"
$Output_RTB.AppendText("Monitoring has Started`r`n")
$Output_RTB.Select($Output_RTB.Text.Length, 0)
$Output_RTB.ScrollToCaret()
}
function Start-RSJob {
$sync = [Hashtable]::Synchronized(@{RTB = $Output_RTB; SD = $Script:sourceDirectory; SF = $Script:filter; DES = $Script:destination})
$rsjob = [PowerShell]::Create().AddScript($RSscriptblock)
$runspace = [RunspaceFactory]::CreateRunspace()
$runspace.ApartmentState = "STA"
$runspace.ThreadOptions = "ReuseThread"
$runspace.Open()
$runspace.SessionStateProxy.SetVariable("sync", $sync)
$rsjob.Runspace = $runspace
$rsjob.BeginInvoke()
}
function StopMonitoring {
Unregister-Event FileCreated
Unregister-Event FileChanged
$Output_RTB.SelectionColor = "Red"
$Output_RTB.AppendText("Monitoring has Stopped`r`n")
$Output_RTB.Select($Output_RTB.Text.Length, 0)
$Output_RTB.ScrollToCaret()
}
#
#Start_Button
#
$Start_Button.BackColor = [System.Drawing.SystemColors]::Control
$Start_Button.FlatAppearance.BorderColor = [System.Drawing.Color]::Blue
$Start_Button.FlatAppearance.MouseOverBackColor = [System.Drawing.SystemColors]::GradientActiveCaption
$Start_Button.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
$Start_Button.Location = (New-Object -TypeName System.Drawing.Point -ArgumentList @([System.Int32]12, [System.Int32]54))
$Start_Button.Name = [System.String]'Start_Button'
$Start_Button.Size = (New-Object -TypeName System.Drawing.Size -ArgumentList @([System.Int32]130, [System.Int32]23))
$Start_Button.TabIndex = [System.Int32]1
$Start_Button.Text = [System.String]'Start Monitoring'
$Start_Button.UseCompatibleTextRendering = $true
$Start_Button.UseVisualStyleBackColor = $false
$Start_Button.add_Click( {Start-RSJob})
#
#Stop_Button
#
$Stop_Button.BackColor = [System.Drawing.SystemColors]::Control
$Stop_Button.FlatAppearance.BorderColor = [System.Drawing.Color]::Blue
$Stop_Button.FlatAppearance.MouseOverBackColor = [System.Drawing.SystemColors]::GradientActiveCaption
$Stop_Button.FlatStyle = [System.Windows.Forms.FlatStyle]::Flat
$Stop_Button.Location = (New-Object -TypeName System.Drawing.Point -ArgumentList @([System.Int32]12, [System.Int32]94))
$Stop_Button.Name = [System.String]'Stop_Button'
$Stop_Button.Size = (New-Object -TypeName System.Drawing.Size -ArgumentList @([System.Int32]130, [System.Int32]23))
$Stop_Button.TabIndex = [System.Int32]2
$Stop_Button.Text = [System.String]'Stop Monitoring'
$Stop_Button.UseCompatibleTextRendering = $true
$Stop_Button.UseVisualStyleBackColor = $false
$Stop_Button.add_MouseClick( { StopMonitoring })
Help greatly appreciated
Thanks
Damian
|
|
|
|
|
Send a "semaphore" file to the folder that the file watcher is watching, telling it to stop.
The Master said, 'Am I indeed possessed of knowledge? I am not knowing. But if a mean person, who appears quite empty-like, ask anything of me, I set it forth from one end to the other, and exhaust it.'
― Confucian Analects
|
|
|
|
|