Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
StackExchange.Redis
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
tsai
StackExchange.Redis
Commits
85629fb7
Commit
85629fb7
authored
Jun 28, 2018
by
Marc Gravell
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
investigating ConnectWithWrongPassword
parent
f347cf61
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
45 additions
and
87 deletions
+45
-87
StackExchange.Redis.sln
StackExchange.Redis.sln
+0
-38
StackExchange.Redis.csproj
StackExchange.Redis/StackExchange.Redis.csproj
+4
-1
LoggingPipe.cs
StackExchange.Redis/StackExchange/Redis/LoggingPipe.cs
+35
-30
Program.cs
TestConsole/Program.cs
+6
-18
No files found.
StackExchange.Redis.sln
View file @
85629fb7
...
@@ -76,83 +76,45 @@ EndProject
...
@@ -76,83 +76,45 @@ EndProject
Global
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|Any CPU = Debug|Any CPU
Log Output|Any CPU = Log Output|Any CPU
Release|Any CPU = Release|Any CPU
Release|Any CPU = Release|Any CPU
Verbose|Any CPU = Verbose|Any CPU
EndGlobalSection
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Log Output|Any CPU.ActiveCfg = Release|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Log Output|Any CPU.Build.0 = Release|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Release|Any CPU.Build.0 = Release|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Release|Any CPU.Build.0 = Release|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Verbose|Any CPU.ActiveCfg = Release|Any CPU
{EF84877F-59BE-41BE-9013-E765AF0BB72E}.Verbose|Any CPU.Build.0 = Release|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Log Output|Any CPU.ActiveCfg = Release|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Log Output|Any CPU.Build.0 = Release|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Release|Any CPU.Build.0 = Release|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Release|Any CPU.Build.0 = Release|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Verbose|Any CPU.ActiveCfg = Release|Any CPU
{3B8BD8F1-8BFC-4D8C-B4DA-25FFAF3D1DBE}.Verbose|Any CPU.Build.0 = Release|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Debug|Any CPU.Build.0 = Debug|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Log Output|Any CPU.ActiveCfg = Debug|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Log Output|Any CPU.Build.0 = Debug|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Release|Any CPU.ActiveCfg = Release|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Release|Any CPU.Build.0 = Release|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Release|Any CPU.Build.0 = Release|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Verbose|Any CPU.ActiveCfg = Debug|Any CPU
{939FA5F7-16AA-4847-812B-6EBC3748A86D}.Verbose|Any CPU.Build.0 = Debug|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Log Output|Any CPU.ActiveCfg = Release|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Log Output|Any CPU.Build.0 = Release|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Release|Any CPU.Build.0 = Release|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Release|Any CPU.Build.0 = Release|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Verbose|Any CPU.ActiveCfg = Release|Any CPU
{71455B07-E628-4F3A-9FFF-9EC63071F78E}.Verbose|Any CPU.Build.0 = Release|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Log Output|Any CPU.ActiveCfg = Debug|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Log Output|Any CPU.Build.0 = Debug|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Release|Any CPU.ActiveCfg = Release|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Release|Any CPU.Build.0 = Release|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Release|Any CPU.Build.0 = Release|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Verbose|Any CPU.ActiveCfg = Debug|Any CPU
{94D233F5-2400-4542-98B9-BA72005C57DC}.Verbose|Any CPU.Build.0 = Debug|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Debug|Any CPU.Build.0 = Debug|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Log Output|Any CPU.ActiveCfg = Release|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Log Output|Any CPU.Build.0 = Release|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Release|Any CPU.ActiveCfg = Release|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Release|Any CPU.Build.0 = Release|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Release|Any CPU.Build.0 = Release|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Verbose|Any CPU.ActiveCfg = Release|Any CPU
{8FDB623D-779B-4A84-BC6B-75106E41D8A4}.Verbose|Any CPU.Build.0 = Release|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Log Output|Any CPU.ActiveCfg = Debug|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Log Output|Any CPU.Build.0 = Debug|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Release|Any CPU.Build.0 = Release|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Release|Any CPU.Build.0 = Release|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Verbose|Any CPU.ActiveCfg = Debug|Any CPU
{6BE847CC-5615-4C72-A304-3DB29725FC76}.Verbose|Any CPU.Build.0 = Debug|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Log Output|Any CPU.ActiveCfg = Debug|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Log Output|Any CPU.Build.0 = Debug|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Release|Any CPU.Build.0 = Release|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Release|Any CPU.Build.0 = Release|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Verbose|Any CPU.ActiveCfg = Debug|Any CPU
{651FDB97-9DE3-4BD9-9A05-827AF8F1A94A}.Verbose|Any CPU.Build.0 = Debug|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Log Output|Any CPU.ActiveCfg = Debug|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Log Output|Any CPU.Build.0 = Debug|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Release|Any CPU.Build.0 = Release|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Release|Any CPU.Build.0 = Release|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Verbose|Any CPU.ActiveCfg = Debug|Any CPU
{769640F3-889C-4E8A-A7DF-916AE9B432A6}.Verbose|Any CPU.Build.0 = Debug|Any CPU
EndGlobalSection
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
HideSolutionNode = FALSE
...
...
StackExchange.Redis/StackExchange.Redis.csproj
View file @
85629fb7
...
@@ -11,8 +11,10 @@
...
@@ -11,8 +11,10 @@
<SignAssembly>true</SignAssembly>
<SignAssembly>true</SignAssembly>
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
<PublicSign Condition=" '$(OS)' != 'Windows_NT' ">true</PublicSign>
<LangVersion>latest</LangVersion>
<LangVersion>latest</LangVersion>
</PropertyGroup>
<!--<DefineConstants>$(DefineConstants);LOGOUTPUT</DefineConstants>-->
<PropertyGroup Condition="'$(Configuration)' == 'Debug' and '$(Computername)'=='OCHO'">
<DefineConstants>$(DefineConstants);LOGOUTPUT</DefineConstants>
</PropertyGroup>
</PropertyGroup>
<ItemGroup>
<ItemGroup>
...
@@ -22,6 +24,7 @@
...
@@ -22,6 +24,7 @@
</ItemGroup>
</ItemGroup>
<ItemGroup Condition="'$(Computername)'=='OCHO'">
<ItemGroup Condition="'$(Computername)'=='OCHO'">
<ProjectReference Include="..\..\Pipelines.Sockets.Unofficial\src\Pipelines.Sockets.Unofficial\Pipelines.Sockets.Unofficial.csproj" />
<ProjectReference Include="..\..\Pipelines.Sockets.Unofficial\src\Pipelines.Sockets.Unofficial\Pipelines.Sockets.Unofficial.csproj" />
</ItemGroup>
</ItemGroup>
<ItemGroup Condition="'$(Computername)'!='OCHO'">
<ItemGroup Condition="'$(Computername)'!='OCHO'">
...
...
StackExchange.Redis/StackExchange/Redis/LoggingPipe.cs
View file @
85629fb7
...
@@ -40,44 +40,49 @@ public LoggingPipe(IDuplexPipe inner, string inPath, string outPath)
...
@@ -40,44 +40,49 @@ public LoggingPipe(IDuplexPipe inner, string inPath, string outPath)
private
async
void
CloneAsync
(
string
path
,
PipeReader
from
,
PipeWriter
to
)
private
async
void
CloneAsync
(
string
path
,
PipeReader
from
,
PipeWriter
to
)
{
{
to
.
OnReaderCompleted
((
ex
,
o
)
=>
{
try
{
if
(
ex
!=
null
)
Console
.
Error
.
WriteLine
(
ex
);
to
.
OnReaderCompleted
((
ex
,
o
)
=>
{
((
PipeReader
)
o
).
Complete
(
ex
);
// if (ex != null) Console.Error.WriteLine(ex);
},
from
);
((
PipeReader
)
o
).
Complete
(
ex
);
from
.
OnWriterCompleted
((
ex
,
o
)
=>
},
from
);
{
from
.
OnWriterCompleted
((
ex
,
o
)
=>
if
(
ex
!=
null
)
Console
.
Error
.
WriteLine
(
ex
);
{
((
PipeWriter
)
o
).
Complete
(
ex
);
// if (ex != null) Console.Error.WriteLine(ex);
},
to
);
((
PipeWriter
)
o
).
Complete
(
ex
);
while
(
true
)
},
to
);
{
try
{
File
.
Delete
(
path
);
}
catch
{}
var
result
=
await
from
.
ReadAsync
();
var
buffer
=
result
.
Buffer
;
if
(
result
.
IsCompleted
&&
buffer
.
IsEmpty
)
break
;
using
(
var
file
=
new
FileStream
(
path
,
FileMode
.
Append
,
FileAccess
.
Write
)
)
while
(
true
)
{
{
foreach
(
var
segment
in
buffer
)
var
result
=
await
from
.
ReadAsync
();
var
buffer
=
result
.
Buffer
;
if
(
result
.
IsCompleted
&&
buffer
.
IsEmpty
)
break
;
using
(
var
file
=
new
FileStream
(
path
,
FileMode
.
Append
,
FileAccess
.
Write
))
{
{
// append it to the file
foreach
(
var
segment
in
buffer
)
bool
leased
=
false
;
if
(!
MemoryMarshal
.
TryGetArray
(
segment
,
out
var
arr
))
{
{
var
tmp
=
ArrayPool
<
byte
>.
Shared
.
Rent
(
segment
.
Length
);
// append it to the file
segment
.
CopyTo
(
tmp
);
bool
leased
=
false
;
arr
=
new
ArraySegment
<
byte
>(
tmp
,
0
,
segment
.
Length
);
if
(!
MemoryMarshal
.
TryGetArray
(
segment
,
out
var
arr
))
leased
=
true
;
{
}
var
tmp
=
ArrayPool
<
byte
>.
Shared
.
Rent
(
segment
.
Length
);
await
file
.
WriteAsync
(
arr
.
Array
,
arr
.
Offset
,
arr
.
Count
);
segment
.
CopyTo
(
tmp
);
await
file
.
FlushAsync
();
arr
=
new
ArraySegment
<
byte
>(
tmp
,
0
,
segment
.
Length
);
if
(
leased
)
ArrayPool
<
byte
>.
Shared
.
Return
(
arr
.
Array
);
leased
=
true
;
}
await
file
.
WriteAsync
(
arr
.
Array
,
arr
.
Offset
,
arr
.
Count
);
await
file
.
FlushAsync
();
if
(
leased
)
ArrayPool
<
byte
>.
Shared
.
Return
(
arr
.
Array
);
// and flush it upstream
// and flush it upstream
await
to
.
WriteAsync
(
segment
);
await
to
.
WriteAsync
(
segment
);
}
}
}
from
.
AdvanceTo
(
buffer
.
End
);
}
}
from
.
AdvanceTo
(
buffer
.
End
);
}
}
catch
{
}
}
}
public
PipeReader
Input
{
get
;
}
public
PipeReader
Input
{
get
;
}
...
...
TestConsole/Program.cs
View file @
85629fb7
...
@@ -7,21 +7,9 @@
...
@@ -7,21 +7,9 @@
class
Program
class
Program
{
{
static
void
Main
()
static
int
Main
()
{
{
var
arr
=
typeof
(
ConnectionMultiplexer
).
Assembly
.
GetTypes
();
//var s = new StringWriter();
Array
.
Sort
(
arr
,
(
x
,
y
)
=>
string
.
CompareOrdinal
(
x
.
FullName
,
y
.
FullName
));
foreach
(
var
type
in
arr
)
{
if
(
type
.
IsPublic
)
{
Console
.
WriteLine
(
$"[assembly:TypeForwardedTo(typeof(global::
{
type
.
FullName
}
))]"
);
}
}
}
static
int
Main2
()
{
var
s
=
new
StringWriter
();
try
try
{
{
#if DEBUG
#if DEBUG
...
@@ -30,10 +18,10 @@ static int Main2()
...
@@ -30,10 +18,10 @@ static int Main2()
var
config
=
new
ConfigurationOptions
var
config
=
new
ConfigurationOptions
{
{
EndPoints
=
{
"127.0.0.1"
},
EndPoints
=
{
"127.0.0.1
:6381
"
},
Password
=
"abc"
,
};
};
using
(
var
conn
=
ConnectionMultiplexer
.
Connect
(
config
,
log
:
s
))
using
(
var
conn
=
ConnectionMultiplexer
.
Connect
(
config
,
log
:
Console
.
Out
))
{
{
Execute
(
conn
);
Execute
(
conn
);
}
}
...
@@ -48,7 +36,7 @@ static int Main2()
...
@@ -48,7 +36,7 @@ static int Main2()
finally
finally
{
{
Console
.
WriteLine
();
Console
.
WriteLine
();
//
Console.WriteLine(s);
//Console.WriteLine(s);
Console
.
ReadKey
();
Console
.
ReadKey
();
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment