/
githubmirror
/
roslyn
Обзор
Документация
Войти
/
githubmirror
/
roslyn
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Interactive/HostTest/SynchronizedTextWriter.cs
82 строки
2 KB
Jared Parsons
generated move
28 сен 2020, 19:36
28 сен 2020, 19:36
1cca63b
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System.Diagnostics; using System.IO; namespace Microsoft.CodeAnalysis.UnitTests.Interactive { internal sealed class SynchronizedStringWriter : StringWriter { public readonly object SyncRoot = new object(); public override void Write(char value) { lock (SyncRoot) { base.Write(value); } } public override void Write(string? value) { lock (SyncRoot) { base.Write(value); } } public override void Write(char[] buffer, int index, int count) { lock (SyncRoot) { base.Write(buffer, index, count); } } public override string ToString() { lock (SyncRoot) { return base.ToString(); } } public string? Prefix(string mark, ref int start) { Debug.Assert(!string.IsNullOrEmpty(mark)); lock (SyncRoot) { var builder = GetStringBuilder(); for (int i = start, n = builder.Length - mark.Length; i <= n; i++) { int j = 0; while (j < mark.Length && builder[i + j] == mark[j]) { j++; } if (j == mark.Length) { var result = builder.ToString(start, i - start); start = i + j; return result; } } return null; } } public void Clear() { lock (SyncRoot) { GetStringBuilder().Clear(); } } } }