|
Sridk wrote: please provide me the c# code
Asking for code is considered rude here and may invite a rain of downvotes. Instead, ask for ideas.
There are many ways to execute multiple tasks in parallel including:
1. Create as many instances of the Thread class and execute them in parallel.
2. Use the ThreadPool class
3. Use BackgroundWorker class
4. Use Task Parallel Library
A word of caution: Using threads may not necessarily improve the performance of your code unless you have multiple processors or your processor has multiple cores. So if you have a single processor with a single core, it will not make any difference in the time taken to complete the task. On the contrary, it may actually slow down your task due to the threading overhead.
|
|
|
|
|
Okay so here's the deal. I have an event that generates a number of xaml components on the fly. One of these xaml components also has some events hooked up to it. In order to do this I am using the following line of code
Holder.ManipulationDelta += new ManipulationDeltaEventHandler(HolderManipulationDelta);
This is then handled with
private void HolderManipulationDelta(object sender, Windows.UI.Xaml.Input.ManipulationDeltaRoutedEventArgs e) {
What I need is to be able to pass in an extra parameter in the event such as...
private void HolderManipulationDelta(object sender, Windows.UI.Xaml.Input.ManipulationDeltaRoutedEventArgs e, CompositeTransform mv) {
However this seems to be invalid. I've tried googling and got some stuff on delegates etc but I cant get my head around it. Can anyone help me out?
|
|
|
|
|
Are you trying to find a way to make the third parameter optional?
|
|
|
|
|
By default there is no third parameter and when i try and add one I get the error message:
"No overload for 'HolderManipulationDelta' matches delegate 'Windows.UI.Xaml.Input.ManipulationDeltaEventHandler'"
I'm looking for a way to add the third parameter in.
|
|
|
|
|
You may want to look into using override . I can't find any tutorials that might help you and I'm not exactly an expert on the subject. But it might be worth while to search on your own as you'll know better what you need.
Edit: The override function is used for changing things in classes and such, from what I can gather.
|
|
|
|
|
There's nothing to override here. If you change the signature of a method, you are adding a new method, not overriding an existing one.
|
|
|
|
|
How does the CompositeTransform get created?
|
|
|
|
|
I'll add a bit more of the code. The compositetransform is created along with one of the xaml components.
public void NewButton_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
Canvas newcanvas = new Canvas();
CompositeTransform mv = new CompositeTransform();
AppGrid.Children.Add(newcanvas);
Ellipse Holder = new Ellipse();
Holder.ManipulationDelta += new ManipulationDeltaEventHandler(HolderManipulationDelta);
}
private void HolderManipulationDelta(object sender, Windows.UI.Xaml.Input.ManipulationDeltaRoutedEventArgs e){
This code compiles, but I need to add the third parameter into the holdermanipulationdelta event, and when i do that i get the error message above.
|
|
|
|
|
Why don't you make "mv" a class member? If you don't want to go that route for some "insane" reason, you can do what you want with lambdas:
Canvas newcanvas = new Canvas();
CompositeTransform mv = new CompositeTransform();
AppGrid.Children.Add(newcanvas);
Ellipse Holder = new Ellipse();
Holder.ManipulationDelta += (x, y) =>
{
HolderManipulationData(x, y, mv);
}
That'll work, but I'd make it a class member since that's more "proper" IMO .
|
|
|
|
|
I'm fairly new to coding and was just trying to bodge it together quickly before figuring out the proper way to do it haha. Might sound a bit silly but it's the way I learn best. Thanks for your help I'll give that a go
|
|
|
|
|
The standard convention in .NET for event delegates is to have just 2 parameters, the first is the object that generated the event and the second is a class derived from EventArgs that provides more information about the event. Note that this is not a hard and fast rule and you can have as many parameters as you like, but sticking to the convention makes your code cleaner, readable and maintainable.
You can compose your CompositeTransform class inside ManipulationDeltaRoutedEventArgs as an instance field.
|
|
|
|
|
|
Cheers for your response. As I said I'm fairly new to this and I wasn't aware this was an option. I don't suppose you have a link to any good resources/tutorials on doing this so that I can read up on it?
|
|
|
|
|
|
I consider SledgeHammer's response, using a Lambda, as the best, elegant solution (and I'm not competent in WPF/XAML), but I am curious, if you are defining a custom EventArgs class for use with your EventHandler:
Why could you not add another parameter, of whatever 'mv's Type is, to that custom EventArgs class; then in your explicit EventHandler implementation which is "wired-up" to the Event, you can test if that instance of 'mv is null, and ignore, or, if not null: do whatever you want to do ?
If this question is (and I fear it may be) way out-of-focus, I appreciate being corrected !
best, Bill
"Everything we call real is made of things that cannot be regarded as real." Niels Bohr
|
|
|
|
|
This is actually a standard event argument for "the technology formerly known as Metro" style apps raised by the subsystem. It's not a custom one the user has created.
|
|
|
|
|
Yeah, the lamba solution I provided was a "quick fix". I wouldn't do it that way in "professional" code. Making it a member was cleaner as noted. Unfortunately, I think OP is going down the entirely wrong path creating objects in code, but when you post those kind of responses on CodeProject, you tend to get 1 voted by people who "don't like your attitude", so I stopped bothering .
There is a danger with the lamba solution, that you could be passing an unintended instance of the wrong object if you don't pay attention .
|
|
|
|
|
Hi
I have an array and i want to put the ّFloat Variable
into the array.
|
|
|
|
|
What kind of array do you have?
You can convert the float to another type for e.g. int by using Convert.ToInt() method[^].
If you need to convert the entire array to another type, use the ConvertAll<> method[^].
|
|
|
|
|
There is no problem in convert.
I want to put each digit of float in each index of float array.
|
|
|
|
|
Are you wondering how to assign a variable to an array?
If your array is a Float type then it's rather straight forward, see below.
float[] Variable = new float[ ];
Variable[0] =
Basically, the Variable[0] is the new variable array with the index (place of the array that you want to write on) which always begins at 0. So, in this case the first index of the array is 0, the second index is 1 and so on and so fourth.
If you need to put a variable that isn't of the float type then you can convert it into that type using the command below.
Convert.toInt32();
Hope this has been of some help and I didn't make it seem over complicated! :P
Best of luck learning c#.
|
|
|
|
|
To "echo" the question raised by AbhinavS's comment: unless we know what type of array (array[float], array[int], array[double], array[?]) you have to begin with, and why you want to stick a float in it if the Array is not of Type 'float: we really can't answer this question.
You might want to read about (from MSDN documentation) the 'Float type:[^]. And, may I also suggest you click on the links at the bottom of this page that lead to content on Implicit and Explicit conversion of numeric Types.
In any case I suggest you think about using a Generic List, rather than an Array.
Here's something else for you to think about:
using System.Collections.Generic;
public List<double> doubleList = new List<double> {1, 2.0, 3.3333, 100038};
public List<float> floatList = new List<float> {1, 2.0, 3.3333}; best, Bill
"Everything we call real is made of things that cannot be regarded as real." Niels Bohr
|
|
|
|
|
Dear Friends,
I have a desktop application and i want to save path in database and generate it in specific location
Thanks
Mena Alfons
Junior .Net Developer
|
|
|
|
|
|
I have a folder o my web host called
http://www.domain.com/resume
and there I have many resumes stored.
I want to know how can I view it using WinForm application?
|
|
|
|