|
|
Well, you need to put it in the message to the original questioner, not to me.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
First of all this is wrong place to ask this question. Such question could be asked in GIT or Lounge.
Secondly, I appreciate the intention that you have behind posting this question i.e. learning but perhaps(like others said) you should be able to come up with some ideas on your own.
thirdly, my suggestion would be to start small application like contact book/address book or small forums. but keep in mind that your sole focus should be on learning various concepts related to C# and ASP.NET than just getting your project done.
Every now and then say, "What the Elephant." "What the Elephant" gives you freedom. Freedom brings opportunity. Opportunity makes your future.
|
|
|
|
|
Hi Team,
I am trying to build an application where I can take any system remote connection(like mstsc) using .NET application. I found one windows application Remote Desktop using C#.NET[^], similarly i want to have in web application.
Or, is it possible to embedd the windows ActiveX control in web app?
Please help on this, thanks in advance.
|
|
|
|
|
|
void SomeFunction()
{
backgroundworker bw = new backgroundworker;
bw.DoWork += (object, eventargs) =>
{
};
}
So what I'm asking is instead of having a separate method for DoWork, is it bad style to put it in the same method that the UI would call?
|
|
|
|
|
Daniel Sheets wrote: So what I'm asking is instead of having a separate method for DoWork, is it bad style to put it in the same method that the UI would call?
Not that I'm aware. A ThreadPool-thread with a delegate does seem more readable though;
void SomeFunction()
{
ThreadPool.QueueUserWorkItem(delegate {
});
}
|
|
|
|
|
That local BackgroundWorker is not likely to survive long enough to actually finish.
As soon as SomeFunction exits it will be available to be GC'd.
I know this is just a quick, throw-away example, but the many beginners on CP might see this and not think of this issue.
|
|
|
|
|
Thanks for the replies.
And Matt... yeah, it was just meant as a throw-away example.
Still a good point to point out the GC though.
|
|
|
|
|
Nothing wrong with that syntactically. But my preference is that if the method is more than a couple lines long, I like to break it out into it's own method so that readability and maintainability is a little easier.
I wasn't, now I am, then I won't be anymore.
|
|
|
|
|
If the "time consuming work" is more then a few lines, I'd say it is bad style. Its not bad style to call a method or mess around with the parameters, etc. That is often quite handy. For example, if you used the stock handler there, you couldn't pass in any arguments. Its often a lot more useful to do something like:
bw.DoWork += (x, y) => MyCustomMethod(someLocalObject1, someLocalObject2);
To be honest though, I've shied away from BackgroundWorker as I find async to be much cleaner.
|
|
|
|
|
If you are using VS 2010 and Framework 4, use Tasks, I have not used VS 2012, so probably async is better. I like to us lambda expressons even for more than a few lines, but obviously not too many lines. What would I consider too many, maybe 10. It keeps everything together.
|
|
|
|
|
I don't get it. What's the big deal with putting a lot of code inside of a lambda expression?
Is it a matter of preference? Readability? Adherence to a standard of coding?
|
|
|
|
|
I think that too many lines is the same as having too many lines in a method. To me it is being able to see everything together when you can.
|
|
|
|
|
Hello every body ...
I want to take a pictures using a linksprite jpeg camera and send the data to the serial port ...
my question is >> how I can store the incoming bytes in a memory stream and then convert the stored data to a jpeg image >> )
CAN ANY ONE HELP ME PLZ ...
|
|
|
|
|
|
Input
System.IO.MemoryStream which has a Write() method. That is how you put it into a Memory Stream.
Kushina wrote: then convert the stored data to a jpeg image
Not sure what that means but since the camera takes jpeg images then the incoming bytes are already a jpeg.
HOWEVER, if what you are really asking is how can you write an application that interfaces with a camera then the steps are:
1. Learn how USB devices work
2. Learn how to interface to USB devices in C#.
3. Learn how the interface to the specific camera works (with 1/2)
4. Write C# code to access the camera using 1/2/3.
5. Do something with the images. Presumably store them as files. Then learn more about C# System.io classes.
Naturally the above presumes you know some C# in the first place. If not then you must also learn the basics of C#.
|
|
|
|
|
Thank you for your kind reply ,response and your help .
It was very useful for me , but I'm still a bit confused and it could be because I did not point out clearly the problem .
I'm a beginner in c# but I have learned some basics in this language .
We have used link sprite jpeg camera in our project . our doctor has divided the project into a group of tasks and we have to learned
to implement it step by step .
This camera has a manual which contains all commands to communicate with the camera
(http://www.mediafire.com/view/?ec79xt02620zil5[^])
we were able till now to send the reset command and get back the return msg .
now we want the camera to take a pictures which has a dimensions (160*120);my task is to get the bytes that represent the picture and how to save it in memory stream to be processed later on . after that how this picture can be displayed as a jpeg image or any other extenssion.
|
|
|
|
|
Say we have a struct A that looks like this:
struct A
{
public string a0;
public string a1;
public string a2;
public string a3;
public unsafe string this[int index]
{
get { return *(&a0 + index); }
}
}
Ok so you can't do that, it would only work for unmanaged types. Fixed size array then? Nope, also only works for unmanaged types.
So then I had a terrible idea:
struct A
{
public string a0;
public string a1;
public string a2;
public string a3;
public unsafe string this[int index]
{
get { return get(ref this, index); }
}
delegate string Get(ref A obj, int index);
static Get get;
static A()
{
DynamicMethod dm = new DynamicMethod("getat", typeof(string), new Type[] { typeof(A).MakeByRefType(), typeof(int) }, typeof(A));
ILGenerator gen = dm.GetILGenerator();
gen.Emit(OpCodes.Ldarg_0);
gen.Emit(OpCodes.Ldflda, typeof(A).GetField("a0"));
gen.Emit(OpCodes.Sizeof, typeof(IntPtr));
gen.Emit(OpCodes.Ldarg_1);
gen.Emit(OpCodes.Mul);
gen.Emit(OpCodes.Conv_I);
gen.Emit(OpCodes.Add);
gen.Emit(OpCodes.Ldind_Ref);
gen.Emit(OpCodes.Ret);
get = (Get)dm.CreateDelegate(typeof(Get));
}
}
And guess what, it works (as far as I tested).
This is a total hack, obviously. But is it OK? Assuming it isn't given bad indexes, can it fail somehow?
I'm not really too interested in "how to do this the right way" (unless you've got something that isn't "just use an array" or "use a switch, it's only 4 items" (that's just for the example)), just in how terrible this way really is.
modified 8-Nov-12 12:15pm.
|
|
|
|
|
I'll give it an A+ for creativity, but a D for maintainability.
|
|
|
|
|
Terrible idea. I *would* use an array or switch , but if you are against that for some absurd reason, you can also dynamically get the variable by name via reflection or expression trees (if you care about performance).
|
|
|
|
|
Can you guarantee that reflection will give you the fields in the right order? I know that it actually, in practice, does (I have some attribute based reflection code to find data display properties in some real business code and you get the fields in declaration order), but when you're indexing into it that needs to be guaranteed.
If you can then yeah I'd have a one shot reflection lookup that creates a cache array of int→PropertyInfo and then look up into that.
|
|
|
|
|
harold aptroot wrote: This is a total hack, obviously. But is it OK? Assuming it isn't given bad indexes, can it fail somehow?
Not much exceptions that are thrown by those functions, according to MSDN. You might want to check whether the topic 'verification' from this page[^] applies to your situation.
No, wouldn't call it a hack, but emitting code is not a widely-understood topic; so you might wanna document what you did there. An implementation that 'generates' the required switch-code and compiling that with the built-in mechanism would be more familiar - also a bit slower, but I doubt that the layout of the class will change often, so it'd be a matter of compiling once and re-using the existing thing.
I'd go for reflection, as mentioned by others. Caching the results might improve speed there, but it's fast enough for most tasks without additional caching.
|
|
|
|
|
Thanks, looks like it'll be fine.
Yea I know, normally I would do something sane, but the situation demands it
|
|
|
|
|
harold aptroot wrote: normally I would do something sane
It's not "insane code", just a tad more scary than seeing someone compile code on the fly. Maintainability might be an issue. It may fail due to a security-update when you're celebrating a wedding in Hawaii, so it'd be best to put some explanation and some hyperlinks in the xml-comment header.
harold aptroot wrote: but the situation demands it
Is this situation a person? It prolly ain't Mr. Performance
This is one of the rare times where the situation itself is more interesting then the programming-exercise.
|
|
|
|