|
I think what you ate trying to do is execute an app on a remote system. Even if your code succeeds, the executable will run locally as a local process. This code must be executed on the server to start your web service, not on the client. You can probably put this as a startup item on the server.
|
|
|
|
|
On top of the other comments, you never said what the error message said. It's kind of important when asking questions about your code.
|
|
|
|
|
I get the error message on the following line of code:
" Process1.StartInfo.Arguments = Process_Arguments;".
|
|
|
|
|
But you didn't say WHAT error you got. That's the important part.
|
|
|
|
|
|
I know this is not a clear question, but this is the situation. I have a windows application which parse some file( i use TPL here).
If i minimize this application and keep idle for more than 30 minutes, then i cannot bring the application back. I can see the minimized icon, but this wont come back even if i do ALT-TAB. This is in windows 7.
Any idea?
My small attempt...
|
|
|
|
|
Can you try this ?
- Right-click on the taskbar and say "Show windows
side by side"
Another option : You may put a timer in your application with this Code:
MessageBox.Show(this.Location.ToString() + "\r\n" + this.Size.ToString() + "\r\n" + this.WindowState.ToString());
this.WindowState = FormWindowState.Normal;
timer1.Enabled = false;
and repost the result here ?
|
|
|
|
|
Is the UI thread blocked? Are you doing som long running operation on the UI thread??
Chances are good one of these two things is what's doing it.
|
|
|
|
|
Is there any reason you sig has enough blank lines to score scrollbars?
Just curious.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
Hmmm...it never did before. I'll take a look.
|
|
|
|
|
Another victim of metrosexualisation? I've since noticed a couple of others in the same boat.
Cheers,
Peter
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
It appears that way!
There were a couple of BR tags under my name that I don't remember placing there.
Anyway, all fixed. Thanks!
|
|
|
|
|
I dont think that the GUI thread is blocked, because using TPL I parse all the files. Then show the result in the grid.
I am minimizing the application after all these operations are completed. That mean app is Idle when i minimize.
If i maximize the app immediately or like after 5. 10 minutes, then i am ok. But after 30-40 minutes i am having issue.
I also use DEV Express grid o show the result.
My small attempt...
|
|
|
|
|
I just told about file parsing, but this behavior may not be related to that. Below is another strange behavior i am seeing.
This is happening only sometimes, which may/may not related to our issue.
Say i have opened any popup window or some applications ( like MS word, IE) from my main form. When I close that popup window/app then the main form will be minimized or some other app will come front. So i had to click the app icon from task bar to bring it back
My small attempt...
|
|
|
|
|
Ditto dave's answer, your UI thread is probably blocked. To resolve this:
Add a BackgroundWorker and create a DoWork handler.
Move your parsing code into there.
Where your parsing code was, call RunWorkerAsync on the BackgroundWorker .
... now your parsing will be done on a background thread so your UI will remain active. You can use ReportProgress with a ProgressChanged handler to pass back info to the UI thread if needed.
|
|
|
|
|
Thanks Dude, instead of BackgroundWorker is use Task and continue with.
Is there any way to check, what went wrong when i got this situation again?
My small attempt...
|
|
|
|
|
Not that I know of, but a good rule for any application that has a UI is to perform potentially long running tasks on another thread so the UI doesn't freeze.
|
|
|
|
|
Thanks Dave, i will get back soon after resolving this issue
My small attempt...
|
|
|
|
|
Hi, so I have multiple textboxes on my c# winform and I am looking for a method to validate each box.
My current implementation works, however I am trying to find a way to expand on it and report which textboxes are not validating successfully.
So say return a string or array where i can search through and then set an errorprovider on them.
This is my validation method.(The method is void and not a bool because i want to return a variable with the failed textboxes)
public bool Successful { get; set; }
public string Information { get; set; }
public void ValidateText(List<object> textbox)
{
foreach (object obj in textbox)
{
if (obj == "")
{
Successful = false;
}
else
{
Successful = true;
}
}
}
and here is my main code
List<object> textbox = new List<object>();
textbox.Add(FirstNTxt.Text);
textbox.Add(LastNTxt.Text);
textbox.Add(CourseTxt.Text);
FormValidation validate = new FormValidation();
validate.ValidateText(textbox);
if(!validate.Successful)
{
MessageBox.Show("error");
}
else
{
}
Any assistance will be appreciated, thanks.
modified 11-Mar-21 21:01pm.
|
|
|
|
|
Your ValidateText will set the Successful to indicate if the last entry in the textbox list is valid or not. All the checking of the earlier entries is lost.
Try something like:
public void ValidateText(List<TextBox> textboxes)
{
Successful = true;
foreach (var tb in textboxes)
{
if (string.IsNullOrEmpty(tb.Text))
{
Successful = false;
}
}
}
and then
List<TextBox> textboxes = new List<TextBox>();
textboxes.Add(FirstNTxt);
textboxes.Add(LastNTxt);
textboxes.Add(CourseTxt);
FormValidation validate = new FormValidation();
validate.ValidateText(textboxes);
if(!validate.Successful)
{
MessageBox.Show("error");
}
else
{
}
Personally, I'd probably make a validation method that operates on one string at a time and then validate and set the errorprovider directly for each TextBox one at a time. (Despite what I showed above, I wouldn't pass the actual TextBox references around. The method should validate the string, possibly returning an error message. The caller (form) passes the .Text and reports the error appropriately.)
|
|
|
|
|
This code well search for all text box in your form and validated it, and it will be better If you Use Tag for Description of Textbox so the user know what he is missing, Plus you avoid typing in the MessageBox something like "No Name" , No Phone" , etc ...
More Over you can tell which TextBox in the form is needed to be validate by checking that Tag if it's Empty or not.
private void CheckTextBox()
{
TxtName.Tag = "First Name";
TxtPhone.Tag = "Phone Number";
foreach (Control control in this.Controls)
{
if (control.GetType().Equals(typeof(TextBox)))
{
if (ValidateText(control.Text))
{
MessageBox.Show(control.Tag.ToString());
MessageBox.Show(control.Name);
}
}
}
}
private bool ValidateText(string text)
{
return text.Equals(string.Empty);
}
P.S :
You can assign the Tag for TextBox by properties Windows during design time.
|
|
|
|
|
Two fantastic suggestions. Thank you so much. Both of these solve the issue I was facing.
Once again, Thanks!
modified 11-Mar-21 21:01pm.
|
|
|
|
|
Sorry, i just got around to trying both methods. For the first one,
public void ValidateText(List textboxes)
{
Successful = true;
foreach (var tb in textboxes)
{
if (string.IsNullOrEmpty(tb.Text))
{
Successful = false;
}
}
}
how do i go about outputting the actual control name that failed? all i can do is echo tb.text which ofc is empty. Any help would be great.
modified 11-Mar-21 21:01pm.
|
|
|
|
|
What would be a good way to monitor a .ini file?
What I want to do is when the file has changed, I need to read the file and find specific text and change it and save the file.
I've attempted the file system watcher with little luck. The problem is it is firing before the file is unlocked. I have also tried to put a method in there to check if the file was locked which basically opens the file and on exception returns true if locked otherwise false.
I have also tried a looping method like this:
private void WriteFile(string file, StringBuilder sb, string oldValue)
{
StreamWriter sw = null;
try
{
sw = new StreamWriter(file, false);
sw.Write(sb.ToString());
sw.Close();
EventLog.WriteEntry("QBiniMonitor", "Successfully removed LASTUSERNAME. Old Value: " + oldValue, EventLogEntryType.Information);
}
catch (IOException)
{
WriteFile(file, sb, oldValue);
}
finally
{
if (sw != null)
{
sw.Close();
sw.Dispose();
}
}
}
It still errored out after it changes the value a couple times in a row. It changes it a couple times but then ends up with a uncaught IOException somehow
|
|
|
|
|
You can use this method in a loop until the ini file closed.
protected virtual bool IsFileLocked(FileInfo file)
{
FileStream stream = null;
try
{
stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
}
catch (IOException)
{
return true;
}
finally
{
if (stream != null)
stream.Close();
}
return false;
}
|
|
|
|