|
You might not need to for a list of invoices, but there are other situations where it would be very useful. For example, if you have a list of points representing a polygon it is useful to be able to access the adjacent nodes so that joints can be re-built if one of the points moves.
|
|
|
|
|
Yes, that's why I said "usually". However, I think we are on the same case for points representing a polygon. Point is a well defined class, and Next or Previous have nothing to do with it. This information might make some sense in a Polygon class, but not in the points themselves. Please, tell us something else about what you pretend to do. Maybe some of us can give you a good approach.
|
|
|
|
|
I don't really agree here. In your example, it is a list of points, each point exists by itself. Drawing a poly-line, or moving/merging points, or performing whatever other operation that goes beyond a single point, would be an operation on the overall object, the polyline, which can access all the points. At the point level, there is no need to access other points, and when there is a need, it has to be organized on the higher level.
Of course if performance is your primary concern, things may well be different. And then I wouldn't use a pre-existing class unless it suits my needs perfectly.
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.
|
|
|
|
|
I would agree with you if everything was static, but if you have a polyline with radius blends, and one point moves, then to rebuild the blend the point that changed only needs to look at the adjacent points, not the whole line. It seems inefficient to have to call another function in the (theoretical) Polyline class to rebuild everything when the point itself knows that its position has just changed.
Maybe I'm trying to over-optimise the efficiency and reducing the simplicity instead.
|
|
|
|
|
Perhaps your points can raise an event that the line is listening for?
somepoint.OnMoved += PointMovedHandler
Besides, aren't Points immutable? Wouldn't a "move" really be a replacement of one Point with another? (Hmmm... it seems they're not... I think they should be. Ah well.)
|
|
|
|
|
In the FrameWork they are one of the very few exceptions.
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.
|
|
|
|
|
Events looks like a good way to go, but I would still prefer to access the Next/Previous nodes directly, I think it'd be more efficient. Looks like I need to code my own.
|
|
|
|
|
|
Hello,
I am populating a queue inside a windows service.
The windows service is now installed and started on my machine.
I can see in the eventlog that the queue is indeed populated i.e. enqueue and Dequeue...
In the windows service, there is a simple method i.e. getQueueData which should return what is inside the queue.
While the windowsservice is running, I start a wcf project which has a reference to the getQueueData method inside the windowsservice.
Question:
Should the wcf return the queue as it is showing inside the eventlog? I mean, while I see the queue being populated, the at the same time when I run the wcf, then should the wcf return the number of items in the queue? I ask because the wcf only seems to think there is always zero items in the queue whilst I see the eventlog and queue has data in it.
Have I done everything correctly?
Thanks
|
|
|
|
|
arkiboys wrote: Have I done everything correctly?
Obviously not. If your queue has data in it, and you can't see it then you haven't done everything correctly. Without seeing your code, I'm going to take a flier as a guess - your queue is not a singleton inside the windows service, and the WCF functionality is seeing a different instance. As I say though, we can't do anymore to diagnose the issue because we have no idea what your code is.
What you could do, is attach your debugger to the running instance of the service and actually step through the code and see what's going on. That would be my choice.
|
|
|
|
|
Hi,
Do you mean the following ?
1- start the windows service in the services list
2- in th ewindows service project, debug, attach to process, select the windows service from the list.
If thi sis what you mean, then i do not see the windows service that I started in the list of the attach to process window.
Thanks
|
|
|
|
|
Is the WCF service hosted by your Windows service?
Or is a different executable?
If the second, obviously the WCF service sees an empty queue, because it references a different object from the one used by the Windows service.
|
|
|
|
|
Yes, the wcf is separate to windows service.
|
|
|
|
|
Then, as I said, the queue you use in the WCF service is different from the one populated in the Windows service.
The WCF service must be hosted by the Windows service and reference the same instance of the queue.
See here for hosting WCF services in custom applications.
|
|
|
|
|
I see what you mean.
To make me understand better I would like to ask:
1- can my issue be solved if silverlight page accesses the method which is inside the windows service project?
I think the answer is No and even if it did I still face the same issue because it will be lokking at a different instance to the one with the queue in it.
I guess the only way to get around this is as you said to host the wcf inside the windows service project which has the queue in it being build.
Am I right please?
Thanks
|
|
|
|
|
|
|
I have now developed a simple console app based on the example:
|
|
|
|
|
Now you have a Windows service (that is actually a console application) that manages your queue, and a console application that exposes a WCF service.
What you have to do is to put the two things together: include the code of the new console app into the code of your Window Service and make sure that both reference the same queue instance.
Then, when you start the Windows service, it will also expose the WCF service that you can call from Silverlight.
|
|
|
|
|
Hi,
I don't think I have "and a console application that exposes a WCF service"
I only have a windows service.
|
|
|
|
|
You said "I have now developed a simple console app based on the example".
So I thought that you had put the WCF service on a separate Console Application.
If you have already put the WCF service into the Windows service, you should be able to browse it from IE on the url you specified when coding it (the example I gave you uses http://localhost:8080/hello).
You have only to add a service reference to your WCF service in the Silverlight application so that it can communicate with the Windows service.
|
|
|
|
|
|
Hi!
Currently my server application runs in the context of the User, that is logged on.
The application is able to create a screenshot and send it to the client and receive input data to perform on the server.
So far this works on XP to Win 2008 R2...
Now, this application should be able to take screenshots and perform user input, even before any user is logged on (similar to RealVNC) or the user decides to look the session, or switch the user...
Is there any way to accomplish this?
I read, that there are some difficulties with Session 0 Isolation on Windows Versions above Vista...
Any ideas
Thank You
Neo
|
|
|
|
|
Hi,
below is my XML file:
<Course>
<CourseInfo>
<Id>3000</Id>
<Name type="BTECH">Bachelor of Technology</Name>
<CourseInfo>
</Course>
I would like to deserialize this XML. I created classes for Course and CourseInfo.
When I tried to deserialize the xml using below code, I got Id as "3000" and Name as "Bachelor of Technology". But didn't get the type attribute. Please guide me to get the value of type attribute. Thanks in advance
public class AwardInfo
{
public string m_Id;
[XmlElement("Id")]
public string Id
{
get { return m_Id; }
set { m_Id = value; }
}
public string m_Name;
[XmlElement("Name")]
public string Name
{
get { return m_Name; }
set { m_Name = value; }
}
}
|
|
|
|
|
"Name" is not a simple type.
Create a class like this :
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType=true)]
public partial class CourseInfoName {
private string typeField;
private string valueField;
[System.Xml.Serialization.XmlAttributeAttribute()]
public string type {
get {
return this.typeField;
}
set {
this.typeField = value;
}
}
[System.Xml.Serialization.XmlTextAttribute()]
public string Value {
get {
return this.valueField;
}
set {
this.valueField = value;
}
}
}
In you original class replace m_name and Name by
private CourseInfoName nameField;
[System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified, IsNullable=true)]
public CourseInfoName Name {
get {
return this.nameField;
}
set {
this.nameField = value;
}
}
Cheers
If you can read this, you don't have Papyrus installed
|
|
|
|