Skip to content

Commit 2a2d788

Browse files
committed
Log Control's unsubscribe from the event when unloaded
1 parent 2d81605 commit 2a2d788

6 files changed

+32
-23
lines changed

src/Serilog.Sinks.WPF/JsonTextBoxSink.xaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
<UserControl x:Class="Serilog.Sinks.WPF.JsonTextBoxSink"
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4-
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5-
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
66
xmlns:local="clr-namespace:Serilog.Sinks.WPF"
77
mc:Ignorable="d"
88
Loaded="JsonTextBoxSink_OnLoaded"
9+
Unloaded="JsonTextBoxSink_OnUnloaded"
910
Height="auto" Width="auto">
1011
<Grid>
1112
<DockPanel>

src/Serilog.Sinks.WPF/JsonTextBoxSink.xaml.cs

+5
Original file line numberDiff line numberDiff line change
@@ -67,5 +67,10 @@ private void JsonTextBoxSink_OnLogReceived(string str)
6767
}));
6868
}
6969
}
70+
71+
private void JsonTextBoxSink_OnUnloaded(object sender, RoutedEventArgs e)
72+
{
73+
WindFormsSink.JsonTextBoxSink.OnLogReceived -= JsonTextBoxSink_OnLogReceived;
74+
}
7075
}
7176
}

src/Serilog.Sinks.WPF/Properties/AssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.2.0.0")]
36-
[assembly: AssemblyFileVersion("1.2.0.0")]
35+
[assembly: AssemblyVersion("1.2.1.0")]
36+
[assembly: AssemblyFileVersion("1.2.1.0")]

src/Serilog.Sinks.WPF/SimpleLogTextBox.xaml

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
<UserControl x:Class="Serilog.Sinks.WPF.SimpleLogTextBox"
22
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
33
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4-
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5-
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
66
xmlns:local="clr-namespace:Serilog.Sinks.WPF"
77
mc:Ignorable="d"
88
Loaded="SimpleLogTextBox_OnLoaded"
9+
Unloaded="SimpleLogTextBox_OnUnloaded"
910
Height="auto" Width="auto">
1011
<Grid>
1112
<DockPanel>

src/Serilog.Sinks.WPF/SimpleLogTextBox.xaml.cs

+17-12
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@ private void SimpleLogTextBox_OnLoaded(object sender, RoutedEventArgs e)
3636
Dispatcher.BeginInvoke(
3737
new Action(
3838
delegate
39-
{
40-
LogTextBox.VerticalScrollBarVisibility = ScrollBarVisibility;
41-
LogTextBox.IsReadOnly = IsReadyOnly;
42-
LogTextBox.FontFamily = FontFamily;
43-
LogTextBox.FontSize = FontSize;
44-
LogTextBox.FontStyle = FontStyle;
45-
LogTextBox.FontWeight = FontWeight;
46-
}));
39+
{
40+
LogTextBox.VerticalScrollBarVisibility = ScrollBarVisibility;
41+
LogTextBox.IsReadOnly = IsReadyOnly;
42+
LogTextBox.FontFamily = FontFamily;
43+
LogTextBox.FontSize = FontSize;
44+
LogTextBox.FontStyle = FontStyle;
45+
LogTextBox.FontWeight = FontWeight;
46+
}));
4747
}
4848

4949
WindFormsSink.SimpleTextBoxSink.OnLogReceived += SimpleTextBoxSink_OnLogReceived;
@@ -62,11 +62,16 @@ private void SimpleTextBoxSink_OnLogReceived(string str)
6262
System.Windows.Threading.DispatcherPriority.Normal,
6363
new Action(
6464
delegate
65-
{
66-
LogTextBox.Text += str;
67-
LogTextBox.ScrollToEnd();
68-
}));
65+
{
66+
LogTextBox.Text += str;
67+
LogTextBox.ScrollToEnd();
68+
}));
6969
}
7070
}
71+
72+
private void SimpleLogTextBox_OnUnloaded(object sender, RoutedEventArgs e)
73+
{
74+
WindFormsSink.SimpleTextBoxSink.OnLogReceived -= SimpleTextBoxSink_OnLogReceived;
75+
}
7176
}
7277
}

src/Serilog.Sinks.WPF/WinFormsSinkInternal.cs

+2-5
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,9 @@ public class WinFormsSinkInternal : ILogEventSink
1414

1515
public event LogHandler OnLogReceived;
1616

17-
private ITextFormatter _textFormatter;
17+
private readonly ITextFormatter _textFormatter;
1818

19-
public WinFormsSinkInternal(ITextFormatter textFormatter)
20-
{
21-
_textFormatter = textFormatter ?? throw new ArgumentNullException(nameof(textFormatter));
22-
}
19+
public WinFormsSinkInternal(ITextFormatter textFormatter) => _textFormatter = textFormatter ?? throw new ArgumentNullException(nameof(textFormatter));
2320

2421
public void Emit(LogEvent logEvent)
2522
{

0 commit comments

Comments
 (0)