Skip to content

Commit 3780f38

Browse files
committed
Fixed issue with trying to write a verbose message outside of the main cmdlet thread.
1 parent f04231d commit 3780f38

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

src/Commands/Base/ConnectOnline.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -601,7 +601,7 @@ private PnPConnection ConnectDeviceLogin()
601601
}
602602
else
603603
{
604-
WriteVerbose("Using Managed AppId from secure store");
604+
messageWriter.WriteVerbose("Using Managed AppId from secure store");
605605
}
606606
}
607607

src/Commands/Utilities/CmdletMessageWriter.cs

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using System.Collections.Generic;
33
using System.Linq;
44
using System.Management.Automation;
5+
using System.Security.Cryptography.Pkcs;
56
using System.Threading;
67

78
namespace PnP.PowerShell.Commands.Utilities
@@ -38,7 +39,25 @@ public void Start()
3839
}
3940
else
4041
{
41-
Cmdlet.Host.UI.WriteLine(message.Text);
42+
switch (message.Type)
43+
{
44+
case MessageType.Message:
45+
{
46+
Cmdlet.Host.UI.WriteLine(message.Text);
47+
break;
48+
}
49+
case MessageType.Warning:
50+
{
51+
Cmdlet.Host.UI.WriteWarningLine(message.Text);
52+
break;
53+
}
54+
case MessageType.Verbose:
55+
{
56+
Cmdlet.Host.UI.WriteVerboseLine(message.Text);
57+
break;
58+
}
59+
}
60+
4261
}
4362
break;
4463
}
@@ -63,6 +82,14 @@ public void WriteMessage(string message, bool formatted = true)
6382
}
6483
}
6584

85+
public void WriteVerbose(string message)
86+
{
87+
lock (LockToken)
88+
{
89+
Queue.Enqueue(new Message() { Formatted = false, Text = message, Type = MessageType.Verbose });
90+
}
91+
}
92+
6693
internal class Message
6794
{
6895
public string Text { get; set; }
@@ -73,7 +100,8 @@ internal class Message
73100
internal enum MessageType
74101
{
75102
Message,
76-
Warning
103+
Warning,
104+
Verbose
77105
}
78106

79107
private static List<string> WordWrap(string text, int maxLineLength)
@@ -99,7 +127,7 @@ internal static void WriteFormattedWarning(PSCmdlet cmdlet, string message)
99127
{
100128
WriteFormattedMessage(cmdlet, new Message { Text = message, Type = MessageType.Warning, Formatted = true });
101129
}
102-
130+
103131
internal static void WriteFormattedMessage(PSCmdlet cmdlet, Message message)
104132
{
105133
if (cmdlet.Host.Name == "ConsoleHost" && cmdlet.Host.UI.RawUI.MaxWindowSize.Width > 8)
@@ -142,6 +170,11 @@ internal static void WriteFormattedMessage(PSCmdlet cmdlet, Message message)
142170
cmdlet.WriteWarning($"{notificationColor}\n{outMessage}{resetColor}\n");
143171
break;
144172
}
173+
case MessageType.Verbose:
174+
{
175+
cmdlet.WriteVerbose(outMessage);
176+
break;
177+
}
145178
}
146179
}
147180
else
@@ -158,6 +191,11 @@ internal static void WriteFormattedMessage(PSCmdlet cmdlet, Message message)
158191
cmdlet.WriteWarning(message.Text);
159192
break;
160193
}
194+
case MessageType.Verbose:
195+
{
196+
cmdlet.WriteVerbose(message.Text);
197+
break;
198+
}
161199
}
162200
}
163201
}

0 commit comments

Comments
 (0)