HTTP Async Post в c #, Raspberry Pi, данные не пост

Если у вас есть нижняя граница (3) и верхняя граница regexString может быть сгенерирована следующим образом

public class RegexBuilder {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();

        int seqStart = 3;
        int seqEnd = 5;
        buildRegex(sb, seqStart, seqEnd);
        System.out.println(sb);
    }

    private static void buildRegex(StringBuilder sb, int seqStart, int seqEnd) {
        for (int i = seqStart; i <= seqEnd; i++) {
            buildRegexCharGroup(sb, i, '0', '9');
            buildRegexCharGroup(sb, i, 'A', 'Z');
            buildRegexCharGroup(sb, i, 'a', 'z');
            buildRegexRepeatedString(sb, i);
        }
    }

    private static void buildRegexCharGroup(StringBuilder sb, int seqLength,
            char start, char end) {
        for (char c = start; c <= end - seqLength + 1; c++) {
            char ch = c;
            if (sb.length() > 0) {
                sb.append('|');
            }
            for (int i = 0; i < seqLength; i++) {
                sb.append(ch++);
            }
        }
    }

    private static void buildRegexRepeatedString(StringBuilder sb, int seqLength) {
        sb.append('|');
        sb.append("([a-zA-Z\\d])");
        for (int i = 1; i < seqLength; i++) {
            sb.append("\\1");
        }
    }
}

Выход

012|123|234|345|456|567|678|789|ABC|BCD|CDE|DEF|EFG|FGH|GHI|HIJ|IJK|JKL|KLM|LMN|MNO|NOP|OPQ|PQR|QRS|RST|STU|TUV|UVW|VWX|WXY|XYZ|abc|bcd|cde|def|efg|fgh|ghi|hij|ijk|jkl|klm|lmn|mno|nop|opq|pqr|qrs|rst|stu|tuv|uvw|vwx|wxy|xyz|([a-z\d])\1\1|0123|1234|2345|3456|4567|5678|6789|ABCD|BCDE|CDEF|DEFG|EFGH|FGHI|GHIJ|HIJK|IJKL|JKLM|KLMN|LMNO|MNOP|NOPQ|OPQR|PQRS|QRST|RSTU|STUV|TUVW|UVWX|VWXY|WXYZ|abcd|bcde|cdef|defg|efgh|fghi|ghij|hijk|ijkl|jklm|klmn|lmno|mnop|nopq|opqr|pqrs|qrst|rstu|stuv|tuvw|uvwx|vwxy|wxyz|([a-z\d])\1\1\1|01234|12345|23456|34567|45678|56789|ABCDE|BCDEF|CDEFG|DEFGH|EFGHI|FGHIJ|GHIJK|HIJKL|IJKLM|JKLMN|KLMNO|LMNOP|MNOPQ|NOPQR|OPQRS|PQRST|QRSTU|RSTUV|STUVW|TUVWX|UVWXY|VWXYZ|abcde|bcdef|cdefg|defgh|efghi|fghij|ghijk|hijkl|ijklm|jklmn|klmno|lmnop|mnopq|nopqr|opqrs|pqrst|qrstu|rstuv|stuvw|tuvwx|uvwxy|vwxyz|([a-z\d])\1\1\1\1
-2
задан Liam 18 January 2019 в 11:37
поделиться

1 ответ

Когда вы делаете async / await, вы в основном хотите, чтобы все (большинство) ваших методов работали в async / await. На данный момент вы смешиваете асинхронные и не асинхронные вызовы методов. Это называется блокировкой в ​​контексте async, и его следует избегать , не в последнюю очередь из-за того, что это может привести к тупикам. Я бы посоветовал вам прочитать Async / Await - Best Practices в асинхронном программировании

В целом (и для некоторого упрощения проблемы) все ваши методы должны иметь подпись

public async Task method()
{

}

и всех , которые должны вызываться вашими методами:

await method();

Вот несколько вещей, которые вы делаете неправильно

private async void startDistanceMonitoring()

Никогда не используйте async void (это только для асинхронных обработчиков событий)

private void Sleep(int NoOfMs)
{
    Task.Delay(NoOfMs).Wait();
}

это блокировка, это должно быть

private async Task Sleep(int NoOfMs)
{
    await Task.Delay(NoOfMs);
}

Когда вы звоните:

[ 115]

startDistanceMonitoring - это метод async, но вы его не ожидаете. Так что ваша программа может очень хорошо завершиться, прежде чем она будет завершена. Это должно быть:

await startDistanceMonitoring();

Вы делаете это неправильно во всем этом блоке кода. Всегда вызывайте методы async с await .

Ваш метод ввода не async, public void Run(IBackgroundTaskInstance taskInstance) должен быть public async Task Run(IBackgroundTaskInstance taskInstance)

0
ответ дан Liam 18 January 2019 в 11:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: