public async Task <bool> StartXRayTracing() { RayProgressCallback rpc = (value) => { Dispatcher.Invoke(new Action(() => { WaveProgress.Maximum = value.totalWaves; WaveProgress.Value = value.currentWaves; WaveProgressLabel.Content = value.currentWaves.ToString() + "/" + value.totalWaves.ToString(); RaysProgres.Maximum = value.linkedLibraryTotalOutput; RaysProgres.Value = value.linkedLibraryMinorOutput; RaysProgresLabel.Content = value.linkedLibraryMinorOutput.ToString() + "/" + value.linkedLibraryTotalOutput.ToString(); })); }; /*try * { * System.IO.Directory.Delete("results/Order_0", true); * } * catch(Exception expc) { }*/ //var config_file = System.IO.Directory.GetCurrentDirectory() + parFileName; await Task <int> .Factory.StartNew(() => RayTracing(1, parFileName, rpc, WaveTraced, stdOutCallback)); return(false); }
private static extern int RayTracing(int argc, [MarshalAs(UnmanagedType.LPStr)] string argv, [MarshalAs(UnmanagedType.FunctionPtr)] RayProgressCallback callbackPointer, [MarshalAs(UnmanagedType.FunctionPtr)] WaveTracedCallback waveCallbackPointer, [MarshalAs(UnmanagedType.FunctionPtr)] StdOutCallback stdOutCallback);