|
Hi everyone,
I am currently writing a program in C#. I would love it if I was able to press a button on the keyboard which would cause the program to stop, jump to another section of code, execute the code. Then jump back to where it left off. I understand you can do this with a condition flag (and poling) but coming from embedded programming background there should be a similar way to do this in C# ( i hope!).
If not, what is the best way to go about this.
I appreciate the help.
Thanks
|
|
|
|
|
If I understand what you're talking about, there is no similar construct in C# or .NET.
|
|
|
|
|
Thanks, I was thinking that maybe there was something similar. I appreciate the response.
|
|
|
|
|
Generally, as Dave said, 'no' .. but, if you are writing a C# Console mode program, then, you can use SetConsoleCtrlHandler to trap CTRL-C, CTRL-BREAK
'g'
|
|
|
|
|
Thanks, i will look into it. I appreciate it.
|
|
|
|
|
To add to what Dave and Garth have said, No, but more "no-ish" than an absolute "NO".
If you are using a console app, then it's not simple, but it is possible. If you are writing a WinForms app then it's pretty simple.
In both cases it is a case of moving the "progam" you want to "interrupt" into a separate thread (look at the BackgroundWorker class) and handling input on the normal thread. When anything (such as a keyboard event) happens, it is processed on the main thread not the "program" thread.
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
BackgroundWorker work = new BackgroundWorker();
work.DoWork += new DoWorkEventHandler(work_DoWork);
work.RunWorkerAsync();
if (Console.ReadLine() == "")
{
Console.WriteLine("Aborted");
}
}
static void work_DoWork(object sender, DoWorkEventArgs e)
{
int i = 0;
while (i < 100)
{
Thread.Sleep(500);
Console.WriteLine(i++);
}
} Try that, you'll see what I mean!
The universe is composed of electrons, neutrons, protons and......morons. (ThePhantomUpvoter)
|
|
|
|
|
This may be a possible fit for him, but I didn't think it was a close enough match for interrupt processing.
I took it that he wanted the program code to stop completely, the code attached to the interrupt runs and returns, then the code resumes. Putting the "interruptable" code on a thread keeps the code running, but allows the interrupt handling code to run side-by-side.
Who knows...without a better explanation of of what he really wants to do we're all just guessing.
|
|
|
|
|
I agree, but it's about the closest you are going to get to true interrupt processing under Windows these days - unless you want to start faffing with device drivers (and I wouldn't start with C# for those!)
The universe is composed of electrons, neutrons, protons and......morons. (ThePhantomUpvoter)
|
|
|
|
|
Thread.Interrupt[^] may help, but I suspect a little too high level
C# has already designed away most of the tedium of C++.
|
|
|
|
|
The C# debugging API might help.
|
|
|
|
|
I have 2 threaded applications one called diag and the other called tester.
The both access the same circuit boards, one USB Relay board, and another board that it communicates via TCP.
I have button controls on each application screen, that I can start the other.
diag -> tester
tester -> diag
code
private void btnOptions_Click(object sender, EventArgs e)
{
_continue = false;
SetRelaysALLOffCallBack();
_board.Disconnect();
this.Close();
Process.Start("C:/Diag.exe");
}
code
In my code I open the other application, and close the application that is open.
This works fine, but the time that the other application opens takes about 30 seconds.
How can I speed up the time for the applications to open ??
|
|
|
|
|
If none of the methods that close your first application are slowing your application down, have a look at what the new application's load methods do.
If you cannot do anything about the speed, you can atleast think of showing a progress bar. This will let the user know the new application is loading.
|
|
|
|
|
Hi,
Try replace Diag.exe with notepad.exe to see, if the 30 seconds are on the calling or called side.
Btw. By default Process.Start makes a call hierarchy with caller becoming a parent of called. This means that parent can't be closed without the child being closed. This might be fine. Otherwise, you can add a ProcessInfo argument that makes Process.Start spawn a process detached from the caller.
Kind Regards,
Keld Ølykke
|
|
|
|
|
I have seen lot of codes but in that codes, no role of public key.
How to implement Digital Signature Algorithm with Secure Hash Algorithm (DSAwithSHA1) for verifying the digital signature using public key in C#?
modified 7-Jun-13 6:34am.
|
|
|
|
|
..and what is your question, precisely?
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I have seen lot of codes but in that codes, no role of public key.
How to implement Digital Signature Algorithm with Secure Hash Algorithm (DSAwithSHA1) for verifying the digital signature using public key in C#?
|
|
|
|
|
Ankur Rawat wrote: no role of public key. It's not always referred to as a "public key". Anything that talks about "certificates" is using a private and a public key.
Ankur Rawat wrote: How to implement Digital Signature Algorithm with Secure Hash Algorithm (DSAwithSHA1) for verifying the digital signature using public key in C#? If you're trying to encrypt data using a certificate, I'd suggest finding a tutorial, or a CodeProject article.
If you're going to go into the depths of the algorithm, you'd need to dive into the MSDN-documentation yourself. FWIW, the validity of a key is usually obtained from a "certificate revocation list". You'd also want to check the date on the certificate.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
Hello to all guys,
I am having a problem in windows application
I have a button through which i can select an image using openfiledialog and thn after the path of the selected image is shown in another textbox but after tht m wanna to save tht save into another fold using savefiledialog but i cant do it
for save an image i use this code
Bitmap bit = new Bitmap(saveFileDialog1.FileName);
bit.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
but it doesnt work can anyone help in it
|
|
|
|
|
Arun kumar Gautam wrote: but it doesnt work You need to tell us exactly what that means.
However:
Bitmap bit = new Bitmap(saveFileDialog1.FileName);
bit.Save(saveFileDialog1.FileName, System.Drawing.Imaging.ImageFormat.Jpeg);
Are you sure you want to create the Bitmap from the filename in the SaveFileDialog ?
Use the best guess
|
|
|
|
|
|
Why are you telling me this?
Use the best guess
|
|
|
|
|
Bitmap bit = new Bitmap(openFileDialog1.FileName);
bit.Save(saveFileDialog1.FileName);
and for saving it as jpg you can either add extension while giving it name in save file dialog or you can add filter in property window of save file dialog under filter property add JPeg Image|*.jpg
|
|
|
|
|
//Use picture offline By Copy Picture from googlemap
I Want convert Latitude & Longitude To Pixcel X Y On PictureBox (C# Get Picture from GoogleMap)
by
picturebox Height :550 px
picture Width : 640 px
IF I Have Latitude : 39.827918 & Longitude : -104.938145 (Map center) & Zoom Map : 11
Map By Google:
http://maps.googleapis.com/maps/api/staticmap?center=39.827918,-104.938145&zoom=11&size=640x550&sensor=false
I want mark New At Latitude : 39.839386 & Longitude : -104.965868
Please !!!
Thank
|
|
|
|
|
It's an online service; this specific difficulty has been solved by Google, and they'll return a nice map including the marker if you provide the location in long+lat.
It's not something that's "easy" - you'd have to take in account the size (and resolution!) of the image-map, and adjust that to a real-size world.
zerozaaa wrote: I want mark New At Latitude : 39.839386 & Longitude : -104.965868 Unless you use the Google service, you'll have to calculate the exact position of the marker in the picture yourself, and draw the marker.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I want to make my program so that it is unable to be hacked. It interfaces with the internet. Some of the things I have been considering is breaking up the program into multiple parts with remote access, one way transference of data. No web page, etc.
Can anyone give me suggestions, reading references, etc. on how to handle this. I appreciate any help.
Thanks in advance.
Michael
|
|
|
|