The problem with using an instance variable to tag a way point as explored is that you might want to compute a second path simultaneously in a second thread of execution. In this instance the two threads of execution would interfere with each other leading to a miss computation of paths.
I solved this problem in a different way by creating a BreadCrumb structure.
private struct BreadCrumb
{
public WayPoint Node;
public WayPoint ExploredFrom;
}
and the using a Dictionary called Loaf to store the bread crumbs using the way point itself as the key.
Dictionary<WayPoint, BreadCrumb> Loaf;
I can also use the dictionary object to determine whether a point has already been examined by using the .ContainsKey method.
Once the end point has been found I can unwind the trail to a List of WayPoints which I then return from my path finding function.