|
You're going to have to define exactly what you mean by "record skeleton tracking" and what you intend to do with the data.
You also never asked a question or defined exactly what the problem is.
|
|
|
|
|
A public method starts with a lock on a static object. Several small private functions are called, some of them using a member variable (and that member variable is only used in these private functions, nowhere else). Something like
private SomeType _SomeMember;
private static readonly object TheLock = new object();
public void DoSomething()
{
lock(TheLock)
{
Step1();
...
Step5();
...
Step9();
}
private void Step5()
{
...
_SomeMember.Blah();
...
}
Now I had to override Step5() in a derived class. Means also that I had to change the signature to protected virtual .
And now ReSharper started complaining about inconsistent synchronization, exactly where I use _SomeMember in Step5() in the base class (in the derived class, Step5() is empty):
ReSharper: The field is sometimes used inside synchronized block and sometimes used without synchronization Since Step5() is only called from DoSomething() , it looks to me like a wrong warning.
Or did I fail to see where the synchronization context gets lost?
|
|
|
|
|
I think because it is now protected and this means you can call Step5 without the help of DoSomething() in the derived class:
base.Step5()
A question: Why your Lock is static?
[Edit]
To check whether my assumption is right maybe a test would help:
protected static readonly object TheLock = new object();
protected override void Step5()
{
lock(TheLock)
{
}
}
BTW: While writing the above, you wrote private void Step5() ... maybe simply override is missing?Nonsense striked out.
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Well, I could do that call from there, but I don't.
The lock is static because the resource to be protected is - behind some wrapping - a serial port. I.e. hardware which is shared by all the commands to be sent over that port.
|
|
|
|
|
Just edited my answer, maybe it is only the missing override , but for this you should then also have a comiler warning.
modified 19-Jan-21 21:04pm.
|
|
|
|
|
The warning remains.
As soon as private gets changed to protected (also without virtual ), internal , or public , does the warning appear.
|
|
|
|
|
Thank you for your feedback. For now I have no more ideas
modified 19-Jan-21 21:04pm.
|
|
|
|
|
lol, the question does not go out of my head. Does a nested lock keep ReShaper from showing a warning?
protected virtual void Step5()
{
lock (TheLock)
{
}
}
modified 19-Jan-21 21:04pm.
|
|
|
|
|
The issue has to do with the fact that R# can't guarantee that you're using _SomeMember inside a synchronized object. In your derived class, you could call Step5 without going through the DoSomething route so R# is doing its best to warn you that you MAY have issues, not that you do have issues.
This space for rent
|
|
|
|
|
Sorry to come back here for this, but I have a short question regarding ReSharper (I'm thinking about to buy it).
Does ReSharper warns me in case I do use IDisposable classes without proper using of using or try/catch ?
Thank you in advance.
modified 19-Jan-21 21:04pm.
|
|
|
|
|
No, it doesn't. Just tried following snippet:
Graphics graphics = Graphics.FromImage(croppedBitmap);
graphics.DrawImage(clippedImage, new Rectangle(Point.Empty, m_TargetSize));
No warning.
|
|
|
|
|
Schade Thank you very much for your reply and effort.
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Just send them a suggestion. They might implement that.
|
|
|
|
|
I think that may not be as simple as it seems at first glance. Otherwise, VS would surely display a warning for such an important issue.
modified 19-Jan-21 21:04pm.
|
|
|
|
|
Hello someone who can give me some code for a fingerprint reader SDK C # MVC +
|
|
|
|
|
You're not going to get code handed to you here.
If you're looking for a C# library that means the finger print scanner would have to be connected to the web server. That's probably not going to happen. ALL ASP.NET/MVC code runs entirely on the server, not the client.
In order to use a finger print scanner on the client machine you have to have some kind of server application running on client to communicate with the scanner and expose a web server for the client javascript code to interact with it.
I don't know of any library that does this but that doesn't mean they don't exist. Just Google for "javascript fingerprint scanner" and you'll probably come up with something.
|
|
|
|
|
I am running this from one domain and against a different domain. The process is incredibly slow and I'm wondering how I can speed my code up so that instead of it taking 20 minutes, it will only take 1 minute.
I have noticed that every once in a while it will only take 1 minute and I'm wondering if I need to point it to a specific DC in the domain I am looking through or maybe something else?
getAllGroupMemberGroupsForGroup("membergroup", "domain.domain.com")
private List<string> getAllGroupMemberGroupsForGroup(string groupName, string domainName)
{
PrincipalContext context = new PrincipalContext(ContextType.Domain, domainName);
GroupPrincipal objects = GroupPrincipal.FindByIdentity(context, groupName);
List<string> groupMembersList = new List<string>();
PrincipalSearchResult<principal> objectMembers = null;
if (objects != null)
{
objectMembers = objects.GetMembers();
}
else
{
return groupMembersList;
}
foreach (Principal objectMember in objectMembers)
{
if (objectMember.StructuralObjectClass == "group")
{
string objectDomain = objectMember.Context.Name;
groupMembersList.Add(objectMember.Name + "|" + objectDomain + "|" + objectMember.DistinguishedName);
}
}
return groupMembersList;
}
|
|
|
|
|
By domain, you mean AppDomain ? If so, performance will always be terrible because it has to serialize everything when crossing a domain.
If not, then ignore this answer.
Marc
|
|
|
|
|
This doesn't make a lot of sense. Are you getting all of the group memberships of a specified user or are you getting all of the group memberships of a list of users who are members of a specified group, or what?
You never spelled out exactly what this code is supposed to be doing.
|
|
|
|
|
My goal is to enumerate through the groups and subgroups and get all of the non duplicate groups/subgroups and put them into a list.
After that I checked to see if a specific user is a member of any of the groups I've enumerated to the list of groups/subgroups.
|
|
|
|
|
"Enumerate through the groups and subgroups" of what? What is the starting object for this query? Are you returning ALL of the groups in the directory?
There is no such thing as a "subgroup". What I think you're referring to is a group that is a member of another group.
Or why not just start with the user object and get the list of groups it is a member of?
|
|
|
|
|
I am enumerating through groups recursively.
There is a starting parent group, and I'm starting with the parent and enumerating through all of the child groups of that parent and every group that is a member of the child groups that are found. At my organization, there may be a nested hierarchy of 12 groups or more and unfortunately there may be some of the same groups nested in other groups as the local admin qualification is to have a pulse.
Does that explain it better?
|
|
|
|
|
That's better.
If you are making a request to the domain controller for every group at every level, you're going through an expensive operation, every single time. Just because you're code hits one domain controller for one request does not mean that the same domain controller is going to service all subsequent requests. You could be throwing requests all over the network without knowing it.
Now, each request is expensive so it would be better to make them once and then cache the result. Create a Dictionary to cache the objects returned. When you make a request for a group, lookup the group name in the cache to see if it's there first. If not, go to the directory to get it and cache it for use next time around. Whenever you go get a list of groups, add them to the cache if needed.
|
|
|
|
|
I have not created a dictionary before, so do you recommend this be stored in a text file or in a database?
This morning I got 323 group results in 65 seconds, I would imagine that when I try after lunch it will take 10x as long.
Is it better for me to try and dictate which DC I am hitting? I can view which DC I'm hitting, so maybe my issue of sporadicness is actually a DC problem? What do you think?
|
|
|
|
|