Ist eine statische gleichzeitige Verantwortung, die einen weiteren gleichzeitigen Thread -Faden sicher enthält?C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Ist eine statische gleichzeitige Verantwortung, die einen weiteren gleichzeitigen Thread -Faden sicher enthält?

Post by Anonymous »

Ich habe Probleme mit einem Programm, in dem ich einige Berichte gleichzeitig auf mehreren Threads erstellen muss. Es handelt sich um ein Legacy -Programm, der Code ist nicht gut dokumentiert und macht einen Fehler, während sie Nunit -Tests ausführt, aber nicht während der lokalen Ausführung der Anwendung auf IIS oder auf einem dedizierten Windows -Server -Computer mit IIS. Das erste, was eine Flagge aufwirft, ist der folgende Code. Wie ich verstehe, sollte es sicher sein, aber ich bin nicht 100% sicher < /p>

Code: Select all

public static class Transliterator
{
private static readonly ConcurrentDictionary converters = new ConcurrentDictionary
{
[SupportedConversions.MK_ENG] = new ConcurrentDictionary()
{
['а'] = "a"
, ['б'] = "b"
, ['в'] = "v"
, ['г'] = "g"
, ['д'] = "d"
, ['ѓ'] = "gj"
, ['е'] = "e"
, ['ж'] = "zh"
, ['з'] = "z"
, ['ѕ'] = "dz"
, ['и'] = "i"
, ['ј'] = "j"
, ['к'] = "k"
, ['л'] = "l"
, ['љ'] = "lj"
, ['м'] = "m"
, ['н'] = "n"
, ['њ'] = "nj"
, ['о'] = "o"
, ['п'] = "p"
, ['р'] = "r"
, ['с'] = "s"
, ['т'] = "t"
, ['ќ'] = "kj"
, ['у'] = "u"
, ['ф'] = "f"
, ['х'] = "h"
, ['ц'] = "c"
, ['ч'] = "ch"
, ['џ'] = "dzh"
, ['ш'] = "sh"
, ['А'] = "A"
, ['Б'] = "B"
, ['В'] = "V"
, ['Г'] = "G"
, ['Д'] = "D"
, ['Ѓ'] = "Gj"
, ['Е'] = "E"
, ['Ж'] = "Zh"
, ['З'] = "Z"
, ['Ѕ'] = "Dz"
, ['И'] = "I"
, ['Ј'] = "J"
, ['К'] = "K"
, ['Л'] = "L"
, ['Љ'] = "Lj"
, ['М'] = "M"
, ['Н'] = "N"
, ['Њ'] = "Nj"
, ['О'] = "O"
, ['П'] = "P"
, ['Р'] = "R"
, ['С'] = "S"
, ['Т'] = "T"
, ['Ќ'] = "Kj"
, ['У'] = "U"
, ['Ф'] = "F"
, ['Х'] = "H"
, ['Ц'] = "C"
, ['Ч'] = "Ch"
, ['Џ'] = "Dzh"
, ['Ш'] = "Sh"
}
};

public static string Transliterate(string source, SupportedConversions conversion)
{
ConcurrentDictionary converter = converters[conversion];

var result = new StringBuilder();

foreach (char letter in source)
{
if (converter.TryGetValue(letter, out string convertedLetter))
{
result.Append(convertedLetter);
}
else
{
result.Append(letter);
}
}

return result.ToString();
}

public enum SupportedConversions
{
MK_ENG = 0
}
}

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post