|
Ah I see what you are saying - my problem is this: then I have multiple disk IO reads, which will slow the system down compared to one. In this project, speed is absolutely necessary. Is there any way that I can write it to memory, so that I can combine the 4 results and write to the file once?
C#... king of languages
|
|
|
|
|
NameYou wrote: Is there any way that I can write it to memory
Sure! You can make a string object in Connect method, keep concatenating strings to it, then finally at the end of your data reading write the whole string to the file. It's almost the same way.
PS.
EricDV is right. You should first make the LockObject private static for the lock to work. Another way to do it is to use Mutex class instead.
Regards
|
|
|
|
|
OK, I understand that, but what I am getting at is that if I had the data write to a file at the end of the reading routine, that file write routine would be executed 4 times (since I have four threads) which is slower than dumping all of the read data into a buffer and then writing the buffer outside of the 4 threads - am I correct? Speed is of the essence with this procedure.
C#, king of languages
|
|
|
|
|
Again this won't hurt. It would be a matter of milliseconds. Yet, if this small time really makes a difference with you, try benchmarking your program. For example, I do it by comparing the value of DateTime.Now.Ticks before and after the procedure I'm testing. See which method would give you the most satisfying results.
PS.
If you really need speed this much, why don't you think of unmanaged code -e.g. C++-?
Regards
|
|
|
|
|
I'm no threading expert, but I think you need to consider that NameYou is creating multiple instances of MyObject. When you create LockObject in each instance, that means that each instances Connect code has a lock -- which is different from locking that piece of code for EVERY instance. You can see the difference by comparing the following two classes:
1)This just locks the code in this instances connect method.
public class MyObject
{
public static string cFieldVal;
public MyObject()
{
}
public void Connect()
{
object LockObject = new object();
lock(LockObject)
{
MessageBox.Show(MyObject.cFieldVal);
MyObject.cFieldVal=MyObject.cFieldVal+="x";
}
}
}
2)This code locks a static field, so it is locked for EACH EVERY instance.
public class MyObject
{
public static string cFieldVal="";
public MyObject()
{
}
public void Connect()
{
lock(cFieldVal)
{
MessageBox.Show(MyObject.cFieldVal);
MyObject.cFieldVal=MyObject.cFieldVal+="x";
}
}
}
-- modified at 8:57 Wednesday 13th December, 2006
--EricDV Sig---------
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.
- Laurence J. Peters
|
|
|
|
|
Actually, the first block doesn't do any locking at all since each method doesn't share the lock object.
Your example blocks all instances, it doesn't matter how many MyObjects there are, only one of them can execute the locked code at any time.
Removing the static keyword from cFieldVal will protect the value for each instance.
I can imagine the sinking feeling one would have after ordering my book,
only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon
|
|
|
|
|
Andy Brummer wrote: Actually, the first block doesn't do any locking at all since each method doesn't share the lock object.
That's what i was trying to say.
Andy Brummer wrote: Your example blocks all instances, it doesn't matter how many MyObjects there are, only one of them can execute the locked code at any time.
Removing the static keyword from cFieldVal will protect the value for each instance.
The intention of the example was to have a lock that every instance shares, and I should have said EVERY rather than EACH. I have changed it. Thanks for pointing that out.
--EricDV Sig---------
Some problems are so complex that you have to be highly intelligent and well informed just to be undecided about them.
- Laurence J. Peters
|
|
|
|
|
You are right. I've tested it. I hope I don't miss that next time.
Regards
|
|
|
|
|
I would suggest you to use asynchronous method invocation and callbacks to make this task much much simpler
|
|
|
|
|
I'm not sure I understand Asynchronous method calling? I've never seen that before. Could you point me in the direction of some information on that, or shoot me over some example code?
uh... yeah
|
|
|
|
|
first sorry if I give'nt you a good answer because I dont undertand you a lot, ok this is fact:
if you need know the process data of this 4 thread, you can use many tools, such as delegate, create a delegate and add all this function inside this, and then put the delegate on execution, for more explanation look this example, using a ProgressBar...
public delegate void ExceutionAsyncronous();
public void function1(){}
public void function2(){}
public void function3(){}
public void RequestTime(ProgressBar som, int value, int max)
{
som.Increment(value++,max);
}
inside your function put this method "RequestTime" in a way that the increment always keeping inside a correct interval, an then ...
ExceutionAsyncronous ob = new ExceutionAsyncronous(function1);
ob+=new ExceutionAsyncronous(function2);
ob+=new ExceutionAsyncronous(function3);
ob();
Remember that this explanation only want give you a Idea, ok
if you need know anything else, please write me ok
|
|
|
|
|
my app language is arabic but the pc that I will deploy this app on it does not support the arabic language . I want my app to solve this problem from whithin it.at the setup project.
Dad
|
|
|
|
|
What you are talking about is called localization. In brief; Localization is determining the culture -i.e. the interface language,\among other things of course- of your program at runtime, allowing your program to support multiple languages based on the choice of the user.
If you want to know more about localization click here[^].
Regards
|
|
|
|
|
...i have the following problem: i have a windows service that when it starts opens the serial port COM1 and then listens on it. Once it receives something(a code) it does something to winamp(depending on the code received e.g. 1=play,2=stop...etc.).to see if it works i have connected pin2 with pin3 of the serial port and i have added a timer in the service which from second to second sends a code to the serial. when i install the service and start it it does nothing to the winamp...i have debugged the code and found out that the function associated to winamp function is executed with no errors (
IntPtr hwnd = SerialPortListner.PortListener.FindWindow(windowName, null);
SerialPortListner.PortListener.SendMessageA(hwnd, WM_COMMAND, WA_STOP, WA_NOTHING);) when the timer event is raised...but i do not know why it does nothing to winamp(play,stop...etc). If i put the exact same code in a windows application it works perfect but in the service it does nothing...
...can u help me pls... thx in advance!
|
|
|
|
|
George_Lucian wrote: i have debugged the code and found out that the function associated to winamp function is executed with no errors
Does that mean that the message is actually sent to winamp? Did you use Spy++ to check that out? Try to send WM_Minimize or WM_Close messages to notepad for example and use Spy++ to see if you service does send these messages.
Regards
|
|
|
|
|
I'm using interop.word.dll component in my application to use MS Words features in my application. I'm able to hide the default control bars. But how do I disable the context menu? I dont find any function for that. Please help.
:Gong: 歡迎光臨 吐 西批 :Gong:
|
|
|
|
|
Hi folks,
Consider a MyEntity class that's being marked as SerializableAttribute . The object is exposed to the outer world through the following web method:
[WebMethod()]<br />
[SoapHeader("Credentials")]<br />
[SoapDocumentMethod(Use=SoapBindingUse.Encoded)]<br />
public MyEntity GetMyEntity()<br />
{<br />
}
Well, I've to mark the web method with SoapDocumentMethodAttribute , or else, the XMLSerializer doesn't have any idea of how to serialize/deserialize the object. I've also altered the reference.cs file (the proxy file generated for the web service automatically) so that it will uses my business_objects.dll to handle objects, the file that hosts the MyEntity class.
The problem is that whenever the GetMyEntity() function is called, the service proxy tries to construct the object using the properties exposed on MyEntity class, using the default constructor of the class. How am I supposed to instruct the proxy to use the class constructors to get the job done? How am I supposed to control the serialization/deserialization process of the entities?
Please keep in mind that the MyEntity class uses circular references, and therefore, the XMLSerilizer or Literal encoding *cannot be used* to handle the issue.
Any help would be highly appreciated,
TIA,
Mehdi
|
|
|
|
|
Keep in mind there are 2 classes involved in this case. On the server your MyEntity class exists as you have defined it. On the client there is a MyEntity class created when you generate the WebReference this class is a simple data class that just has public fields defined which match the public properties of the class defined on the server.
When you write a web service, it is really just a collection of static methods which return simple data objects.
I can imagine the sinking feeling one would have after ordering my book,
only to find a laughably ridiculous theory with demented logic once the book arrives - Mark McCutcheon
|
|
|
|
|
I think you missed the part that I said: "I've also altered the reference.cs file (the proxy file generated for the web service automatically) so that it will use my business_objects.dll to handle objects, the file that hosts the MyEntity class."
This means that those classes you've mentioned do not exist any more. It now uses my business_objects.dll on the client (and server)... So what? What am I supposed to do to handle the Serializing/Deserializing the objects as needed?
TIA,
Mehdi
|
|
|
|
|
Mehdi Mousavi wrote: What am I supposed to do to handle the Serializing/Deserializing the objects as needed?
You aren't. The proxy classes are designed to just instantiate a data class they weren't intended to do what you are trying to do. I'd write a wrapper around the proxy class that converts between your objects and the proxy object data objects. That would probably get you the closest to what you are trying to accomplish.
Using the GridView is like trying to explain to someone else how to move a third person's hands in order to tie your shoelaces for you.
-Chris Maunder
|
|
|
|
|
HI all turned on VS2005 this morning and had a shock. My Tool Bar has gone hay wire The General tab has renamed itself #13119 and my Report Item Tab has replaced all the reporting controls with text boxes when I chose for a reset all it does is add another text box in the tab. So I reinstalled/repaired VS2005 and the problem has not been fixed does any one know what i have done to mess my system up and more importantly how to rectify the problem.
Many thanks
|
|
|
|
|
Look up /resetsettings command line for the IDE.
|
|
|
|
|
Thanks been playing about un-installing reinstalling VS2005 for the past day now
the tool bar now seems to work but I still get the following in the output window upon loading
The ReportDesignerPackage ({11B8C903-8FFD-4DFC-87CE-F6A82D77AF6B}) did not load because of previous errors. For assistance, contact the package vendor. To attempt to load this package again, type 'devenv /resetskippkgs' at the command prompt.
The DataWarehouse VSIntegration layer ({4A0C6509-BF90-43DA-ABEE-0ABA3A8527F1}) did not load because of previous errors. For assistance, contact the package vendor. To attempt to load this package again, type 'devenv /resetskippkgs' at the command prompt.
|
|
|
|
|
Hey guys,
I have a date string (dd-mm-yyyy) which I want to convert into a yyyy-mm-dd string (i'm retrieving the string from a plain XML file, but that doesn't matter)
I though creating a string array, inverse that, and create a string again would solve my problem, but I didn't get an inverse method on the string array. What is the quickest way to accomplish this?
|
|
|
|
|
Read the date and then output it using one of the date conversion formatters. It's far simpler.
the last thing I want to see is some pasty-faced geek with skin so pale that it's almost translucent trying to bump parts with a partner - John Simmons / outlaw programmer
Deja View - the feeling that you've seen this post before.
|
|
|
|