Методы Расширения C# на PocketPC Windows CE

@seh прав.

Вы ожидаете от Java того, что обычно называют «поведением в реальном времени». Этого невозможно достичь надежно, если вы не используете библиотеки реального времени в дистрибутиве Java с поддержкой реального времени, работающем в операционной системе реального времени.

Просто чтобы проиллюстрировать, реализация потоков Java в современных JVM, таких как HotSpot, полагается на собственный планировщик потоков операционной системы хоста, чтобы решить, какие потоки запускать когда. Если планировщик потоков не знает о крайних сроках и прочем в реальном времени, он, скорее всего, примет решение о том, какие потоки запускать и когда выполнять. Если система загружена, любой конкретный поток может не запуститься по расписанию на несколько секунд ... или дольше ... после того, как пройдут условия, которые препятствовали его работе (например, ожидание события таймера).

Тогда есть проблема, что Java GC может заставить все другие потоки блокироваться.

Если вам действительно нужно поведение Java в режиме реального времени, оно доступно. Например:

Тем не менее, вы должны ожидать, что ваши приложения будут использовать другие API для работы в режиме реального времени.

5
задан David Božjak 10 June 2009 в 14:10
поделиться

5 ответов

Хотел устранить небольшую путаницу здесь. Методы расширения - это функция компилятора, не обязательно конкретная версия платформы. Следовательно, методы расширения могут использоваться на любой платформе, где есть версия компилятора, поддерживающая как методы расширения, так и эту платформу.

Компилятор C # 3.0 может снижать целевой уровень до 2.0 и поддерживает методы расширения, поэтому они должны быть доступны в компактной платформе.

Единственное, что структура фактически предоставляет для методов расширения, - это ExtensionAttribute. Однако это не имеет связанных с ним функций и может быть определено вашим приложением, если оно недоступно. Вот сообщение в блоге, которое я написал по теме

7
ответ дан 18 December 2019 в 13:18
поделиться

Они поддерживаются в Compact Framework согласно этой записи в блоге . Однако я ожидаю, что им потребуется Compact Framework версии 3.5. Какую версию вы используете?

2
ответ дан 18 December 2019 в 13:18
поделиться

Да, они поддерживаются в CF 3.5. Если вы используете CF 2.0, вам нужно будет определить атрибут ExtensionAttribute, и тогда они будут работать.

    // this is a definition of a 3.5 class for use in 2.0.  If we upgrade to target CF3.5, we will need to remove it...
    namespace System.Runtime.CompilerServices 
    { 
        public class ExtensionAttribute : Attribute { } 
    }

namespace TestExtension
{
    public static class Extensions
    {
        public static int TestMethod(this string value)
        {
            return value.ToString();
        }
    }
}
3
ответ дан 18 December 2019 в 13:18
поделиться

На какую версию фреймворка вы ориентируетесь? Если вы ориентируетесь на CF 2.0 из VS2008, вам может потребоваться объявить ExtensionAttribute ...

namespace System.Runtime.CompilerServices
{
    [AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class
         | AttributeTargets.Method)]
    public sealed class ExtensionAttribute : Attribute {}
}
2
ответ дан 18 December 2019 в 13:18
поделиться

Вы можете использовать его с .NET Compact Framework 2.0 и VS2008 с помощью небольшого взлома согласно в этом блоге.

0
ответ дан 18 December 2019 в 13:18
поделиться
Другие вопросы по тегам:

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