public FileStream(
string path,
FileMode mode,
FileAccess access,
FileShare share
)
var str = "abc\0";
var UTF16data = Encoding.Unicode.GetBytes(str);
var len = UTF16data.Length;
IntPtr pData = Marshal.AllocCoTaskMem(len);
// IntPtr pData = Marshal.AllocHGlobal(len);
… использование pData …
Marshal.Copy(UTF16data, 0, pData, len);
Marshal.FreeCoTaskMem(pData);
// Marshal.FreeHGlobal(pData);
Navigate(new Page2(){ variable = "abc"});
void goButton_Click(object sender, RoutedEventArgs e)
{
this.NavigationService.Navigate(new ContentPage(), DateTime.Now);
}
void NavigationService_LoadCompleted(object sender, NavigationEventArgs e)
{
DateTime requestDateTime = (DateTime)e.ExtraData;
string msg = string.Format("Request started {0}\nRequest completed {1}", requestDateTime, DateTime.Now);
MessageBox.Show(msg);
}
tProfiler.ItemsSource = queryInf;
BEGIN TRAN BUYITEM;
Select cash from users (UPDLOCK) WHERE id = @id;
UPDATE users SET cash = cash-@cash WHERE id = @id;
INSERT INTO items VALUES (@id, @item);
COMMIT TRAN BUYITEM;
<Canvas>
<Path Stroke="Black" StrokeThickness="1">
<Path.Data>
<PathGeometry>
<PathFigure>
<LineSegment Point="100,100"/>
<LineSegment Point="150,120"/>
<PolyBezierSegment Points="170,120 190,100 200,160 220,140"/>
</PathFigure>
</PathGeometry>
</Path.Data>
</Path>
</Canvas>
class Program
{
static List<Thread> threads = new List<Thread>(); // Список потоков
static int threadCount = 10; // Число потоков
static ManualResetEvent startEvent = new ManualResetEvent(false); // Событие для старта рабочих потоков
static volatile int starterCount = 0; // Счётчик запущенных потоков. volatile показывает, что переменная будет изменяться в различных потоках и её не надо оптимизировать
static object LockObject = new object(); // Блокировка для изменения переменной starterCount
static void Main(string[] args)
{
// Создаём пул потоков
for (int i = 0; i < threadCount; i++)
{
Thread thread = new Thread(Work);
threads.Add(thread);
}
// На старт — запускаем стартовые потоки и ждём их запуска
foreach (var thread in threads)
new Thread(Starting).Start(thread);
while (starterCount < threadCount) Thread.Sleep(1);
// Внимание — к этому моменту все стартовые потоки запустились и ожидают на WaitOne()
Thread.Sleep(100);
// Марш — установка события отпускает приостановленные потоки
startEvent.Set();
while (true) ;
}
static void Starting(object paramThread)
{
lock (LockObject)
{
starterCount++;
}
startEvent.WaitOne();
(paramThread as Thread).Start();
}
static void Work()
{
return;
}
}