|
Do you mean that is 3.5 to 4.0 conversion problem or generic problem for the windows service with 4.0 version?
Чесноков
|
|
|
|
|
It's a problem with the 4.0 version as far as I can tell (nothing to do with the conversion). A search of the web found a large number of variations on your problem here - not always a windows service, a long running windows forms app has the same problem.
|
|
|
|
|
Are they going to resolve the problem or are there any updates to 4.0 version or hot fixes?
I found just a couple of such reports having program crash once in a week e.g.
But here exactly after 1 minute it crashes. That is something to be a pattern
Чесноков
|
|
|
|
|
There are hot-fixes rolled up here[^], but there may be problems if you are using C++, so it's worth evaluating in a VM before you install it properly.
Details of what's in the compound fix can be found here[^].
|
|
|
|
|
In any case they are related to 4.0 only?
I've created 4.0 projects from scratch and migrated source code to them.
First service run was very promissing about 5 minutes without problems.
I stopped it and decided the reason was due to migation.
But the next service runs started to behave pretty wierd giving APPCRASH for mscoreei.dll 0xc0000005, and finally the same clr.dll 0xc00000fd without that 1 minute pattern as in 3.5->4.0 version.
Чесноков
|
|
|
|
|
That's correct. The issue seems to have been introduced with the V4 clr.dll.
|
|
|
|
|
I started to experiment with timer interval of the service processing functionality setting it to different values 30,10,15,1,0.5,0.1 seconds. At every timer event service performs some work in worker threads.
First there are the same clr.dll crashes with large timer intervals after exactly 10 calls to unmanaged class library. Then after I tried smaller ones the crashes disappeared. Occasionally there were few new ones:
Framework Version: v4.0.30319
Description: The process was terminated due to an internal error in the .NET Runtime at IP 6B50927D (6B290000) with exit code 80131506.
From the .NET runtime source. But now everything seems to work without problems. I wonder the reason of that erratic behaviour, every day new type of crash.
Have you tried http://support.microsoft.com/kb/2520479[^] yourself? Were there any problems with SP1 for VS Ultimate version with standalone SDK 7.1 installed?
Чесноков
|
|
|
|
|
Hi All,
I am back for eating everybodies head.
Attached is the excel file in which there are 3 formats of a same table in a report.
So based upon these 3 formats I have created 3 different rpt files.
Now the client is saying that he can anytime add any number of columns in any place and report should be generated. This means right now if you have look at the excel file, Format 2 has the highest number of column. But he can introduce fields in between or in the beginning or in the end.
Right now "Reading Before Adjustment" or "Reading After Adjustment" has 3 columns, but number of columns can either increase or decrease also.
So is it possible to dynamically create text object, assign them locations on the report and so on?
I did not find the facility of attachment. You can see the attachment here : Here[^]
Thanks and Regards,
|
|
|
|
|
you can read excel sheet in c#
from first cell to end cell...
and you will be insert into generic list from your data.
then you can sorting and searching...
show under code...
it's connect excel ole connect
-----------------
DataTable dtTempTable = new DataTable();
DataTable dtMyTable = new DataTable();
DataRow drMyRow;
int nRowCount = 0;
nRowCount = 0;
strSCell[0] = "A";
strSCell[1] = "1";
strECell[0] = "IV";
strECell[1] = "65536";
if (CommonLib.IsNullString(FileName.Substring(FileName.Length - 4, 4)).Equals("xlsx"))
{
strProvider = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=";
strProvider += (FilePath + FileName);
strProvider += @";Extended Properties=""Excel 12.0;Imex=1;HDR=YES;""";
strQuery = "Select * From [Sheet1$" + strSCell[0] + strSCell[1] + ":" + strECell[0] + strECell[1] + "]";
}
else
{
strProvider = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";
strProvider += (FilePath + FileName);
strProvider += @";Extended Properties=""Excel 8.0;Imex=1;HDR=YES;""";
strQuery = "Select * From [Sheet1$" + strSCell[0] + strSCell[1] + ":" + strECell[0] + strECell[1] + "]";
}
OLEDBConnection = new OleDbConnection(strProvider);
OLECommandObject = new OleDbCommand(strQuery, OLEDBConnection);
OLEDBConnection.Open();
if (OLEReader != null)
{
if (!OLEReader.IsClosed)
OLEReader.Close();
}
OLEReader = OLECommandObject.ExecuteReader(CommandBehavior.CloseConnection);
dtTempTable.Load(OLEReader);
if (dtTempTable.Rows.Count > 0)
{
dtMyTable = dtTempTable.Copy();
}
if (OLEReader != null)
{
if (!OLEReader.IsClosed)
OLEReader.Close();
OLEReader.Dispose();
}
if (OLEDBConnection != null)
OLEDBConnection.Close();
return dtMyTable;
modified on Monday, March 21, 2011 7:01 PM
|
|
|
|
|
Please use the code block button to insert <pre></pre> tags around your code to make it readable. Check the posting guidelines at the top of this forum.
I must get a clever new signature for 2011.
|
|
|
|
|
Modify my reply.
thanks for your kind.
|
|
|
|
|
No problem, I'm glad you have joined the list of people who contribute to the site.
Have fun
I must get a clever new signature for 2011.
|
|
|
|
|
Hey there! Been a while… took a little break from bugging you all with questions .
Anyways I was working on a server/client project so I could just become familiar with socket programming before I took a little "programming" break. Now that I'm going to continue it I had a few questions about trying what I'm attempting to do.
What I want is to create a Agent-Based monitoring application. So the idea would be to have the server sitting out on the WAN listening for connections from the agents. The agents will upload data and will perform more actions in the future.
So what is the best way to handle multiple connections? The connections could range anywhere from 1 to 750 agents that checkin every 30 seconds. Some products that come in mind is Labtech, Kaseya, and Zenith. I was using async sockets and see tons of people out there just creating new threads on a new connection, but surely this will kill the server when you get many connections.
Should I be using a thread pool (haven't dove into how to do this yet), creating new threads, async sockets, or what?
Thanks!
|
|
|
|
|
maybe...
best way use thread pool, and each socket response object use async call back...
or anybody suggest more better solution. sorry..
|
|
|
|
|
|
Interesting.. never seen that used.. I will have to check more into that.
|
|
|
|
|
For a checkin every 30 seconds you might want to consider UDP or reconnecting each time.
The recommended way to do TCP is using the asynchronous methods; as you correctly guess creating lots of threads can cause problems. A lot of people (including myself!) start out that way because it's easy, it's how you did it in Java and the documentation for the asynchronous sockets is not that great.
What's likely to be the biggest problem in this design is that you will be using up to 750 sockets. That will be a bigger hit than the use of .Net objects with such a low load.
A quick search turned up this excellent article on high performance use of the asynchronous socket methods.
|
|
|
|
|
I haven't read that link you put up yet but I kind of skimmed through it. It appears that it is using libraries newer than .NET 2.0. I should of mentioned that I wanted to stick with nothing above .NET 2.0. Now for stuff like Labtech I really think they are using a web service (which I do not want to use). I can't really use UDP because the agent has to be able to retrieve data back from that server when it checks in. This is because the server will not really have access to any agent directly since they are on different networks. So the agent has to be the one to start the connection and accept data back.
|
|
|
|
|
I believe that NAT forwarding automatically makes 'return packet' UDP datagrams work as you'd expect, so as long as the agent started the UDP 'connection' it should be ok. I am not an expert on UDP though.
Asynchronous sockets are in .Net 2.0.
|
|
|
|
|
Only one comment - if you've got 750 clients, make sure they connect, do whatever they have to do and disconnect immediately afterwards (or force disconnect them). Holding lots of idle sockets open will kill scalability. This is the approach webservers use. And for lots of short lived connections, the threadpool is definitely your friend. When you accept a socket through a TcpListener or similar pass the socket to a method and throw it on the threadpool.
Regards,
Rob Philpott.
|
|
|
|
|
So only handle so many connections at one time… but do not reject any? It almost sounds like if I don't get the calculation right I could end up in a loop (meaning some agent actions not being performed in the correct amount of time before it tries to checkin again)
|
|
|
|
|
hi everyone, I use the below approach to close all the processes. Althoug it works well, it can't close hidden process. This is a cyber cafe client side program and games like Knightonline, Metin2 etc. can't be closed this way.
We know that windows closes everything when ending the session. So, to achieve the same goal, is it possible to end the session and then log in back without any user intervention?
Process[] allprcs = Process.GetProcesses();<br />
<br />
foreach (Process p in allprcs)<br />
{<br />
p.Kill();
}
|
|
|
|
|
No, it is not possible to end the session and log back in without user intervention.
Well, that's not entirely true. You'd have to setup a "admin login" when the machine logs back in as a user that is put in a special registry location. You put the username and password into this registry location and Windows will use it to log the console session back in when Windows starts. This is a HORRIBLE idea. Why? Because the username and password has to be in clear text (unencrypted).
The problem with your code is that you're trying to stop all processes, and you cannot do that. You can only stop processes that you have permissions to stop. Even an admin level account cannot stop all processes. Processes that run under system level account or are critical to running Windows cannot be stopped. The only way to end them is to shutdown Windows.
|
|
|
|
|
teknolog123 wrote: So, to achieve the same goal, is it possible to end the session and then log in back without any user intervention?
Thinking about Dave's comment; how about bluntly restarting the entire machine (assuming that they log on automatic)?
--edit;
I'm not that good in keeping track of the time; I'd appreciate it if the software would give a warning that it's about to close down and to save/commit my work
I are Troll
|
|
|
|
|
Two comments:
1.
for your code to be a bit successful, it should not kill itself; so at least check Process p isn't your own process!
2.
it sounds to me you need a Windows service; it could keep track of the processes that get created by the user, and then it could kill those, and their dependants, whenever you must.
Don't ask me for more details, I have none to offer; I'm not in to this kind of computer (ab)use at all.
Luc Pattyn [Forum Guidelines] [My Articles] Nil Volentibus Arduum
Please use <PRE> tags for code snippets, they preserve indentation, improve readability, and make me actually look at the code.
|
|
|
|