How are the real-time features in C# programs?
Windows itself is not a real-time system. In order to achieve real-time features, it is necessary to execute time-critical code in a real-time context (at kernel level). Due to the fact that in a .NET environment C# can not be executed in real-time, the behavior in time still depends on the Windows scheduler. Thus, it is possible to assign the time-critical C# threads the absolute highest thread priority.
Previously this was not possible for programmers. For this reason, Kithara provides the respective mechanisms. At least, the mechanisms can ensure that the application takes priority over all other Windows applications. For true real-time behavior the essential code should be programmed in C++ and swapped in a DLL file, so that it can be loaded directly in the real-time context.
For communication between application and real-time context shared memory, data or messages pipes, events, or sockets are available. A number of examples projects are included to show how "hard" real-time can be embedded in C# applications.