- Take the steps described in Integrate DevMateKit if you haven't done it yet.
- You can specify additional
DMFrameworkSettings
properties if needed. DevMate Crash Report provides the following configuration options:
Property | Type | Description |
---|---|---|
IsBeta | bool | Specifies whether a current version of the application is Beta. |
ApplicationSettings | Dictionary<string,object> | Application settings that must be sent with the report data. |
AdditionalInfromation | string | Additional information that must be sent with the report data. |
ApplicationIcon | string | Sets a “TitleBar” icon for DevMate Framework windows. Must contain at least one 16x16pt icon. Example: pack://application:,,,/TestApp;component/icon.ico. |
LogFilePath | string | Path to a log file (if there is a number of log files, it sends only the recently used). If a value is null or empty, or file does not exist, then the Framework tries to load a file from the Logs property. |
Logs | string | Used to set up specific logs if a LogFilePath value is null or empty. If a value is null or empty, an empty string is sent to the server. |
For example:
DMFeedbackFrameworkSettings.ApplicationSettings.Add("Setting1", "Value1");
DMFeedbackFrameworkSettings.ApplicationSettings.Add("Language", "en");
DMFeedbackFrameworkSettings.ApplicationSettings.Add("AppRunCount", 0);
DMFeedbackFrameworkSettings.ApplicationSettings.Add("Setting2", "Value2");
DMFeedbackFrameworkSettings.LogFilePath = @"C:\Program Files\AppName\Logs\logfile.log";
DMFeedbackFrameworkSettings.AdditionalInformation = "Version with hidden feature";
Crashes
This report type is generally used to notify about unhandled exceptions.
To subscribe for unhandled exceptions:
App.Current.DispatcherUnhandledException += CurrentOnDispatcherUnhandledException;
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
...
private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
{
DMFeedbackWindowController.BigIconSource = “pack://application:,,,/Images/icon.png";
DMFeedbackWindowController.ShowCrashReportDialog(e.Exception);
}
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
{
DMFeedbackWindowController.BigIconSource = “pack://application:,,,/Images/icon.png";
DMFeedbackWindowController.ShowCrashReportDialog(e.ExceptionObject as Exception);
}
private void CurrentOnDispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e)
{
DMFeedbackWindowController.BigIconSource = “pack://application:,,,/Images/icon.png";
DMFeedbackWindowController.ShowCrashReportDialog(e.Exception);
}
Exceptions
Generally, this type of a report is used to show non-critical exceptions handled with “try-catch” statement.
For example:
try
{
Directory.CreateDirectory(“testFolder”);
}
catch (Exception ex)
{
Trace.TraceError("Could not create folder”);a
DMFeedbackWindowController.BigIconSource = “pack://application:,,,/Images/icon.png";
DMFeedbackWindowController.ShowCrashReportDialog(ex, FeedbackTypes.Exception);
}