class Program
{
static void Main(string[] args)
{
// Выделение памяти из неуправляемой области
// Получаем обычный указатель для использования в c/c++ функциях
var pComputerName = Marshal.AllocHGlobal(256);
// Вызываем описанную внешнюю функцию
// Она будет работать непосредственно с памятью по указателю
int size = 256;
GetComputerName(pComputerName, ref size);
// Переводим результат в управляемый вид
var str = Marshal.PtrToStringUni(pComputerName);
Console.WriteLine(str);
// Обязательно освобождаем выделенную память
Marshal.FreeHGlobal(pComputerName);
Console.ReadLine();
}
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)]
public static extern void GetComputerName(IntPtr pComputerName, ref int size);
}
TestContext.DataRow[0].ToString();
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;
<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>