我正在开发一种能够接收套接字连接的Windows服务,因此请使用Function XLBlank()
For Each sh In ActiveWorkbook.Worksheets
sh.Activate
Cells(1, 1).Select
lRow = Cells.Find(What:="*", _
After:=Range("A1"), _
LookAt:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
Range("A" & lRow + 1, Range("A1").SpecialCells(xlCellTypeLastCell).Address).Select
On Error Resume Next
Selection.EntireRow.SpecialCells(xlBlanks).EntireRow.Delete
Cells(1, 1).Select
ActiveWorkbook.Save
Next
ActiveWorkbook.Worksheets(1).Activate
ActiveWorkbook.Save
End Function
方法:
OnStart
protected override void OnStart(string[] args)
{
start();
}
函数如下所示:
start
问题是没有连接被接受,而相同的代码在标准命令行项目中运行完美,但我怀疑我的设计是否存在问题,哪个线程运行public async void Start()
{
//initialization things
...
...
TcpListener listener = new TcpListener(IPAddress.Any, port);
listener.Start();
while(true)
{
TcpClient client = await listener.AcceptTcpClientAsync().ConfigureAwait(false);
...
}
...
}
方法? OnStart
经过OnStart
接受过程后,异步方法是否被忽略,因为在Windows服务中这是一种特殊情况?欢迎任何建议
答案 0 :(得分:1)
调用start()方法时,代码立即继续并且OnStart完成。现在,您自己的代码中没有任何部分可以捕获任何异常。 TaskScheduler必须捕获异常。但这只会在等待任务或收集垃圾时发生。
因此,基本上,您的代码可能抛出了 if (resultCode == RESULT_OK) {
switch (requestCode) {
case PLACE_PICKER_REQUEST:
assert data != null;
Place place = Autocomplete.getPlaceFromIntent(data);
String placeName = Objects.requireNonNull(place.getAddress()).toString();
}
}
,直到Exception
被垃圾回收之前,它一直未被观察。为了更快地捕获日志异常,请始终确保在无法在任何地方等待的方法中捕获异常:
Task
答案 1 :(得分:0)
在Windows防火墙中似乎是一个问题,当我将代码作为控制台应用程序进行测试时,我从Windows防火墙收到一条确认消息,要求获得打开端口的权限,但是当我将其作为服务进行测试时,防火墙静默阻止传入的连接,而无需任何通知。