测量代码块运行时间
var watch=new Stopwatch();
watch.Start();
Console.WriteLine($"Upload Elapsed {watch.ElapsedMilliseconds}");
watch.Restart();
当前时间:
Console.WriteLine("creat measurement {0} - {1}", _measurement.Id, DateTime.Now);
与C++混合开发
- 定义委托
public class Test
{
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void AddChunkDelegate(Chunk chunk);
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
public delegate void ErrorHandlerDelegate(string message);
[DllImport("libface.so", CallingConvention = CallingConvention.Cdecl)]
public static extern bool doExtraction(string video, string mode, uint chunkLength, AddChunkDelegate addChunk, ErrorHandlerDelegate errorHandler);
}
public static void AddChunk(Chunk chunk)
{
Console.WriteLine("meta");
}
public static void ErrorHandler(string message)
{
Console.WriteLine(message);
}
- 结构体
public struct Chunk
{
public byte valid { get; set; }
public uint startFrame { get; set; }
public uint endFrame { get; set; }
public uint chunkNumber { get; set; }
public uint numberChunks { get; set; }
public ulong firstChunkStartTime_s { get; set; }
/// <summary>
/// Start time of chunk in milliseconds from 1970 in UTC
/// </summary>
public ulong startTime_s { get; set; }
public ulong endTime_s { get; set; }
/// <summary>
/// Should be same as payload DurationSeconds
/// </summary>
public float duration_s { get; set; }
public IntPtr payload { get; set; }
public int payloadLength { get; set; }
public string metadata { get; set; }
public byte[] Payload
{
get
{
var buffer = new byte[payloadLength];
Marshal.Copy(payload, buffer, 0, payloadLength);
return buffer;
}
}
}