|
No, you fill the dataset.
|
|
|
|
|
do the following code:
DataTable dt = ds.Table["Employee"];
DataRow row = dt.NewRow();
row["id"] = 1;
row["name"] = "Kishan";
..............
|
|
|
|
|
Hi all,
I am using a windows form timer to check running processes, but this is not a good way to do it, it is blocking the UI.
Wat would be the best way to do this?
This is what I use:
private void check_RunningProcessTimer_Tick(object sender, EventArgs e)
{
if (IsProcessRunning("Some_proces"))
{
this.SendToBack();
}
else
{
this.Activate();
}
if (IsProcessRunning("osk"))
{
btnOskKeyBoard.Text ="X" ;
}
else
{
btnOskKeyBoard.Text = "";
}
}
I would also like to do this for other things like checking if Com port is open or closed.
Thanks,
Groover.
|
|
|
|
|
You should move this type of function to a background thread so that it does not block the UI.
|
|
|
|
|
I have never used threads before and I do not really know how to implement it, please help me on the way.
some questions:
Should I include the public bool that returns the running process in the thread?
Do I have to create a event in the thread for each process change?
How do I deal with with change of Com port change?
I think of using a system timer with autoreset, what would be the timer interval to make sure all the changes are detected?
this is the public bool I use ;
public bool IsProcessRunning(string name)
{
foreach (Process clsProcess in Process.GetProcesses())
{
if (clsProcess.ProcessName.Contains(name))
{
return true;
}
}
return false;
}
Please point me in the right direction,
thanks,
Groover
|
|
|
|
|
I don't think those questions can be reasonably answered in a forum like this. I would suggest you try a search for some of the articles here that deal with thread programming, and try a few test programs to get familiar with the issues surrounding synchronisation and data transfer between processes.
|
|
|
|
|
OK,
I changed Windows forms timer to System.Threading.Timer and Invoked all UI controls in the TimerCallback.
There is one problem left, the:
this.Activate() is called every timer timeout and this causes a problem with dialogs and message boxes.
I can do a:
runningProcess_Timer.Change(Timeout.Infinite, Timeout.Infinite); for every call to a dialog or message
and a:
runningProcess_Timer.Change(0, 100); after closing.
I there an event I can create or handle on dialogs and message boxes I can use to disable and enable the timer when these pop-ups need attention?
Groover.
|
|
|
|
|
You are not doing it quite right. All the UI code including dialogs and message boxes (which are merely custom dialogs) should run in the main thread without interference or timers. Anything that requires periods of inactivity (such as sleep, wait for external event etc) should run in a background thread. The background threads can communicate with the foreground by using shared memory or sending messages. I'm sure you can find some good samples in the Articles section.
|
|
|
|
|
Thank You for Your advice,
I think You don't understand what I am trying to do.
On my main form I have a button that starts the on screen keyboard and if it is running kills it.
There is no problem unless the user uses the close box on the application.
To make the button the right state(close or open) I use the timer to check if the application is running or not.
The same with the Some_process, it has to be topmost until it closes. I have no code for Some_process, it is not my application.
Some_process is killed by a comport event and my code makes my application topmost again and hide the task-bar and start menu.
If the user closes Some_process with the closing button, my application looses focus. To prevent this I have to check if Some_process is running or not.
I have changed the code in my timer handling and it seems not to interfere with any forms an custom message boxes.
Not sure if it interferes with message boxes from System.Windows.Forms MessageBox Class and dialogs.
This is what I have now:
System.Threading.Timer runningProcess_Timer;
runningProcess_Timer = new System.Threading.Timer(new TimerCallback(checkRunningProcesses), null, 0, 100);
private void checkRunningProcesses(object obj)
{
if (this.IsHandleCreated)
{
if (!IsProcessRunning("osk"))
{
this.Invoke(new EventHandler(delegate
{
btnKeyBoard.Text = "";
}));
}
else
{
this.Invoke(new EventHandler(delegate
{
btnKeyBoard.Text = "X";
}));
}
if (!IsProcessRunning("Some_process"))
{
this.Invoke(new EventHandler(delegate
{
int i = 0;
foreach (Form f in Application.OpenForms)
{
if (f.Enabled)
{
i += 1;
}
}
if (i < 2)
{
this.Activate();
}
}));
}
}
}
Groover
|
|
|
|
|
GrooverFromHolland wrote: I think You don't understand what I am trying to do.
That is true.
|
|
|
|
|
messbox can not show until i press the "Alt" on the keyboard,i am confused that,
the detail is:
i run the program in "MainForm",then i open the other form ,when i need the messbox to show,it just can not work ,unless i press the "Alt" key? what's problem?please help,thanks
|
|
|
|
|
We have no idea what the problem is as you you haven't described what the app does, or what the app was doing at the time you showed the MessageBox, nor what the code looks like that created the message box. Without that, it's impossible to answer your question.
|
|
|
|
|
Please don't cross post: Help:messbox can not show normally[^]
Follow at one place. For now, your said behavior about messagebox is not a standard one. Thus, it's difficult to comment on the reason.
|
|
|
|
|
I have a PC with 12GB memory and the OS is win2008r2.
Now,I wanna merge serveral picese of jpg into one picese of jpg,but the vs2008 throw a error which messages "Invalid parameter".
How can I solve the problem?
My code like below:
Image finalImage= new Bitmap(30280, 48000);//this code causes the error "Invalid parameter".
Graphics MergeImage = Graphics.FromImage(finalImage);
DirectoryInfo theFolder = new DirectoryInfo(folder_path);
Image tempImage;
string[] index;
int i = 0;
int j = 0;
foreach (FileInfo NextFile in theFolder.GetFiles("*.jpg"))
{
tempImage = new Bitmap(folder_path + @"\" + NextFile.Name);
index = NextFile.Name.Split('.');
i = Convert.ToInt32(index[0]);
j = Convert.ToInt32(index[1]);
MergeImage.DrawImage(tempImage, new Point(j * captureWidth, i * captureHeight));
MergeImage.Flush();
tempImage.Dispose();
File.Delete(folder_path + @"\" + NextFile.Name);
}
123
|
|
|
|
|
Edit: I could have sworn I saw this there. But it isn't now so never mind.
|
|
|
|
|
What's the confusion? You're trying to create a 5.8GB image. Invalid parameter sounds about right .
|
|
|
|
|
No single object in .NET can be greater than 2GB of memory in size, no matter how much memory is in the machine.
Since a bitmap, in memory, is represented as 32-bits for every pixel, your resulting image size is 30280 x 48000 x 4 = 5,813,760,000 bytes. That's FAR greater than then 2.1GB limit.
You have no choice but to reduce the image size or find a library that can do the job in unmanaged code where the limit does not exist.
modified 16-Jun-12 0:53am.
|
|
|
|
|
3x everyone.I try to use unmanage way to solve it.3x
123
|
|
|
|
|
And? So you haven't been able to do it in C/C++.
You simply don't have a choice here. It gets done in unmanaged code or it doesn't get done at all.
You also haven't said anything about HOW you tried to do this in unmanaged code either.
Typically, to relieve all the memory pressure such an operation would place on the system, I would have implements methods to do this entirely in the files on disk. This, of course, would mean you have to implement the code to interpret and write the kinds of files you want to handle, such as JPG, BMP, GIF, TIF, ..., so you don't try to write a correcupted file. This would mean you have to know every detail of these file formats.
modified 16-Jun-12 9:48am.
|
|
|
|
|
Are you sure you need a single composite image? What are you going to do with it? Systems that (seem to) provide huge images (Google Maps, Google Street View, Microsoft PhotoSynth, ...) with lots of pan and zoom use a virtual image: what you get to see is painted on the spot from a number of images, the composite image is never constructed at all. And that is for several reasons, including memory footprint and performance.
|
|
|
|
|
Hi
In my test application for Text On A Path in WPF,
I am using path geometry from Formatted text ,in place of Text Block .
If, by commenting this line in (Text On A Path in WPF Downloaded Application),I
cant get proper result,
//t.RenderTransformOrigin = new Point(0.0, 1.0);
I face same problem as above in my application ,because I don't know how to use RenderTransformOrigin with path-geometry..
Please Help me,Waiting for humble response.
Mayur Patel
mpatel2911@ymail.com
|
|
|
|
|
patelmayur wrote: If, by commenting this line in (Text On A Path in WPF Downloaded Application)
Assuming this refers to an article here on CodeProject, you can use the forum at the end of the article to contact the author.
|
|
|
|
|
Hi everyone,
I am a programer and work with visual studio 2010 and do some c#.
The company provided me a hp proBook 5310m, win7 pro 32-bits laptop with wich I could do my job first using vs 2005 and for something like one year now vs 2010.
Since this laptop is getting old They bought me a new one. A HP EliteBook i7-2920xm, win7 pro 32-bits, a great horse...
The configuration of the OS seems to be similar between each laptop as both have the same OS and are fully up to date. For VS 2010 I exported/imported the settings from the IDE.
So I downloaded the code from the source safe to the new laptop and tried to complete the necessary compiling of the referenced projects before I can start working with the one I am on.
That's where the problem began to start.
The programs in the solution I am developping are mainly targeting the framework 2.
As we are using WCF WebServices we need to reference some dll that come from the framework 3.5 as for instance:
'System.Runtime.Serialization.dll' or 'System.ServiceModel.dll' and a few other ones.
First of all I noticed that I have to re-reference those 3.5 targeting dlls. At this point I get an warning message box saying this dlls are targeting a framework higher than the projects and I should target a higher framework.
I searched the net and found that the solution spreaded around is the one that consist of unloading
the project, edit it and place the tag <<specificverion>>'True'<<specificversion>>' for these referenced dlls.
This solution seems to work but then all other referencing programs must be adapted this way and as the solution contains at least 50 programs and references programs in other solutions and so on it is not realistic to unload and modify all this projects settings at least as I do not have the rights to perform this kind of setting.
Can someone explain me why everything works fine on a laptop and not on another that has the same configuration.
It is driving me mad and I cannot use the new laptop.
|
|
|
|
|
I think changing the the FrameWork to which the project is targeted from IDE may be easier than doing it in the code.
To change from IDE, right click on Project concerned in the Solution Explorer, select Properties menu option, in the opened form, select the Application tab page and in that select the required FrameWork in the Target Framework combo box.
|
|
|
|
|
This method can definitly not be applied as I do not have the rights and there is no way I can convince the team leader to re-target the more than 200 projects splitted in tenth of solutions to framwork 4.
And as the first laptop has the same configuration than the second on wich things do not compile there must be a way to configure the second to work as the first.
In fact this the point of my thread.
Even when the project targets a framework 2 or 3 it seems the framework 4 has a final hand on VS 2010.
Maybe the solution would be to target the laptop itself to use another framework than the 4.0 but I don't know wether is this possible or not.
But thank you for your answer.
|
|
|
|