Почему бы вам не собрать все в блок действий, который имеет действительное ограничение?
var count = 0;
var ab1 = new TransformBlock<int, string>(l => $"1:{l}");
var ab2 = new TransformBlock<int, string>(l => $"2:{l}");
var doPrint = new ActionBlock<string>(
async s =>
{
var c = Interlocked.Increment(ref count);
Console.WriteLine($"{c}:{s}");
await Task.Delay(5);
Interlocked.Decrement(ref count);
},
new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = 15 });
ab1.LinkTo(doPrint);
ab2.LinkTo(doPrint);
for (var i = 100; i > 0; i--)
{
if (i % 3 == 0) await ab1.SendAsync(i);
if (i % 5 == 0) await ab2.SendAsync(i);
}
ab1.Complete();
ab2.Complete();
await ab1.Completion;
await ab2.Completion;
Система. Сеть. HttpUtility. UrlEncode будет использовать UTF8 (я думаю..) как его кодер по умолчанию, можно изменить это путем определения один..
System.Web.HttpUtility.UrlEncode("éléphant", Encoding.Default); // %e9l%e9phant
Хотя может быть предпочтительно указать фактическую кодовую страницу или что не, вместо того, чтобы полагаться на значение по умолчанию ОС.
Ссылка:
js: %E9 l %E9 phant
.net: %c3 %a9 l %c3 %a9 phant
Различие - то, что каждый UTF-8
Кодирование URL, тогда как другой дает Вам ANSI
Кодирование URL.
В.NET попробуйте:
Dim a As String = System.Web.HttpUtility.UrlEncode( _
"éléphant", _
Text.Encoding.Default)
Я добираюсь
%e9 l %e9 phant
в результате. Это соответствует строке, Вы предусмотрели JavaScript, за исключением случая Шестнадцатеричного символа.
В JavaScript (по данным этого WebSite: http://www.albionresearch.com/misc/urlencode.php), я получаю следующее: %E9l%E9phant.
Та страница является неправильной. JavaScript также использует UTF-8, как.NET делает по умолчанию. Попробуйте его сами:
javascript:alert(encodeURIComponent('éléphant'))
%C3%A9l%C3%A9phant
URL сегодня являются UTF-8. Не пытайтесь использовать cp1252 больше. UTF-8 является Вашим другом. Доверительный UTF-8!
Кодирование. Значение по умолчанию будет только работать на Вас, если текущая кодовая страница Вашей системы будет установлена на западноевропейца. Теперь это могло бы быть важно, если JavaScript также работает на той же машине как кодер.NET, но в противном случае затем можно вызвать кодовую страницу к западноевропейской:
System.Web.HttpUtility.UrlEncode("éléphant", Encoding.GetEncoding(1252));
Вы могли также попробовать base64, кодирующий их.
Существует предыдущее сообщение, которое имеет дело с выполнением его в JavaScript.
Что касается в.NET, существует много примеров, показывающих, как сделать это. Вот тот, который я нашел от Google.
Конечно, строки могли бы быть немного больше, чем urlencoding. Однако они будут запутываться, который может быть преимуществом в зависимости от приложения.