請幫我理解c#中鎖的流程。 帶有方法的類正在不斷地由兩個不同的線程週期性地調用。理解c中的鎖#
class DataRetriever
{
BaseUrl="...";
public static void _Fetch(<list<dataInformation> quote)
{
XDocument doc=XDocument.Load(BaseUrl);
parse(quote,doc);
}
private static void Parse(List<dataInformation> quotes, XDocument doc)
{
// some statement
}
}
// dataInformation is a class here
現在的問題是...... 1.是否有在不在需要任何鎖語句如果_Fetch()方法是由兩個或更多的線程調用定期。如果是,請告訴我爲什麼以及如何?我想了解鎖定流程。 2.爲什麼我們使用對象被鎖定?
我在這裏試圖
class DataRetriever
{
BaseUrl="...";
object obj=new object()
public static void _Fetch(<list<dataInformation> quote)
{
lock(obj) // giving error obj is not accepting here
{
XDocument doc=XDocument.Load(BaseUrl);
parse(quote,doc);
}
}
private static void Parse(List<dataInformation> quotes, XDocument doc)
{
// some statement
}
}
也試圖解決
class DataRetriever
{
BaseUrl="...";
public static void _Fetch(<list<dataInformation> quote)
{
lock(this) // giving error this is not accepting
{
XDocument doc=XDocument.Load(BaseUrl);
parse(quote,doc);
}
}
private static void Parse(List<dataInformation> quotes, XDocument doc)
{
// some statement
}
}
做要緊。請儘可能提供一些有用的鏈接。 關於
鎖是不是在你的情況需要爲您不分享你的線程之間的任何狀態。 –
這是一個靜態方法..我剛剛刪除它並創建它現在正在接受的實例方法。 – user3248647
謝謝@Tien Dinh ..你能給我一些關於這個的鏈接嗎? – user3248647