Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
lwm1986
roslyn
提交
4cc91e88
R
roslyn
项目概览
lwm1986
/
roslyn
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
roslyn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
4cc91e88
编写于
4月 20, 2015
作者:
M
Matt Warren
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Capture handlers on initial raise
上级
2107c77e
变更
5
显示空白变更内容
内联
并排
Showing
5 changed file
with
56 addition
and
33 deletion
+56
-33
src/Features/Core/Diagnostics/DiagnosticService.cs
src/Features/Core/Diagnostics/DiagnosticService.cs
+3
-2
src/Features/Core/SolutionCrawler/SolutionCrawlerProgressReporter.cs
...s/Core/SolutionCrawler/SolutionCrawlerProgressReporter.cs
+3
-2
src/Workspaces/Core/Portable/Notification/GlobalOperationNotificationService.cs
...rtable/Notification/GlobalOperationNotificationService.cs
+6
-4
src/Workspaces/Core/Portable/Utilities/EventMap.cs
src/Workspaces/Core/Portable/Utilities/EventMap.cs
+29
-15
src/Workspaces/Core/Portable/Workspace/Workspace_Events.cs
src/Workspaces/Core/Portable/Workspace/Workspace_Events.cs
+15
-10
未找到文件。
src/Features/Core/Diagnostics/DiagnosticService.cs
浏览文件 @
4cc91e88
...
...
@@ -58,13 +58,14 @@ internal class DiagnosticService : IDiagnosticService
private
void
RaiseDiagnosticsUpdated
(
object
sender
,
DiagnosticsUpdatedArgs
args
)
{
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
<
DiagnosticsUpdatedArgs
>>(
DiagnosticsUpdatedEventName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
<
DiagnosticsUpdatedArgs
>>(
DiagnosticsUpdatedEventName
);
if
(
ev
.
HasHandlers
)
{
var
eventToken
=
_listener
.
BeginAsyncOperation
(
DiagnosticsUpdatedEventName
);
_eventQueue
.
ScheduleTask
(()
=>
{
UpdateDataMap
(
sender
,
args
);
_eventMap
.
RaiseEvent
<
EventHandler
<
DiagnosticsUpdatedArgs
>>(
DiagnosticsUpdatedEventName
,
handler
=>
handler
(
sender
,
args
));
ev
.
RaiseEvent
(
handler
=>
handler
(
sender
,
args
));
}).
CompletesAsyncOperation
(
eventToken
);
}
}
...
...
src/Features/Core/SolutionCrawler/SolutionCrawlerProgressReporter.cs
浏览文件 @
4cc91e88
...
...
@@ -106,11 +106,12 @@ private Task RaiseStopped()
private
Task
RaiseEvent
(
string
eventName
)
{
// this method name doesnt have Async since it should work as async void.
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
>(
eventName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
>(
eventName
);
if
(
ev
.
HasHandlers
)
{
return
_eventQueue
.
ScheduleTask
(()
=>
{
_eventMap
.
RaiseEvent
<
EventHandler
>(
eventName
,
handler
=>
handler
(
this
,
EventArgs
.
Empty
));
ev
.
RaiseEvent
(
handler
=>
handler
(
this
,
EventArgs
.
Empty
));
});
}
...
...
src/Workspaces/Core/Portable/Notification/GlobalOperationNotificationService.cs
浏览文件 @
4cc91e88
...
...
@@ -49,11 +49,12 @@ public override GlobalOperationRegistration Start(string operation)
protected
virtual
Task
RaiseGlobalOperationStarted
()
{
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
>(
GlobalOperationStartedEventName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
>(
GlobalOperationStartedEventName
);
if
(
ev
.
HasHandlers
)
{
return
_eventQueue
.
ScheduleTask
(()
=>
{
_eventMap
.
RaiseEvent
<
EventHandler
>(
GlobalOperationStartedEventName
,
handler
=>
handler
(
this
,
EventArgs
.
Empty
));
ev
.
RaiseEvent
(
handler
=>
handler
(
this
,
EventArgs
.
Empty
));
});
}
...
...
@@ -62,13 +63,14 @@ protected virtual Task RaiseGlobalOperationStarted()
protected
virtual
Task
RaiseGlobalOperationStopped
(
IReadOnlyList
<
string
>
operations
,
bool
cancelled
)
{
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
<
GlobalOperationEventArgs
>>(
GlobalOperationStoppedEventName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
<
GlobalOperationEventArgs
>>(
GlobalOperationStoppedEventName
);
if
(
ev
.
HasHandlers
)
{
var
args
=
new
GlobalOperationEventArgs
(
operations
,
cancelled
);
return
_eventQueue
.
ScheduleTask
(()
=>
{
_eventMap
.
RaiseEvent
<
EventHandler
<
GlobalOperationEventArgs
>>(
GlobalOperationStoppedEventName
,
handler
=>
handler
(
this
,
args
));
ev
.
RaiseEvent
(
handler
=>
handler
(
this
,
args
));
});
}
...
...
src/Workspaces/Core/Portable/Utilities/EventMap.cs
浏览文件 @
4cc91e88
...
...
@@ -53,23 +53,10 @@ public void RemoveEventHandler<TEventHandler>(string eventName, TEventHandler ev
}
}
public
bool
Has
EventHandlers
<
TEventHandler
>(
string
eventName
)
public
EventHandlerSet
<
TEventHandler
>
Get
EventHandlers
<
TEventHandler
>(
string
eventName
)
where
TEventHandler
:
class
{
return
this
.
GetRegistries
<
TEventHandler
>(
eventName
).
Length
>
0
;
}
public
void
RaiseEvent
<
TEventHandler
>(
string
eventName
,
Action
<
TEventHandler
>
invoker
)
where
TEventHandler
:
class
{
var
registries
=
GetRegistries
<
TEventHandler
>(
eventName
);
if
(
registries
.
Length
>
0
)
{
foreach
(
var
registry
in
registries
)
{
registry
.
Invoke
(
invoker
);
}
}
return
new
EventHandlerSet
<
TEventHandler
>(
this
.
GetRegistries
<
TEventHandler
>(
eventName
));
}
private
ImmutableArray
<
Registry
<
TEventHandler
>>
GetRegistries
<
TEventHandler
>(
string
eventName
)
...
...
@@ -147,5 +134,32 @@ public override int GetHashCode()
return
this
.
handler
.
GetHashCode
();
}
}
internal
struct
EventHandlerSet
<
TEventHandler
>
where
TEventHandler
:
class
{
private
ImmutableArray
<
Registry
<
TEventHandler
>>
registries
;
internal
EventHandlerSet
(
object
registries
)
{
this
.
registries
=
(
ImmutableArray
<
Registry
<
TEventHandler
>>)
registries
;
}
public
bool
HasHandlers
{
get
{
return
this
.
registries
!=
null
&&
this
.
registries
.
Length
>
0
;
}
}
public
void
RaiseEvent
(
Action
<
TEventHandler
>
invoker
)
{
if
(
this
.
HasHandlers
)
{
foreach
(
var
registry
in
registries
)
{
registry
.
Invoke
(
invoker
);
}
}
}
}
}
}
src/Workspaces/Core/Portable/Workspace/Workspace_Events.cs
浏览文件 @
4cc91e88
...
...
@@ -48,12 +48,13 @@ protected Task RaiseWorkspaceChangedEventAsync(WorkspaceChangeKind kind, Solutio
projectId
=
documentId
.
ProjectId
;
}
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
<
WorkspaceChangeEventArgs
>>(
WorkspaceChangeEventName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
<
WorkspaceChangeEventArgs
>>(
WorkspaceChangeEventName
);
if
(
ev
.
HasHandlers
)
{
return
this
.
ScheduleTask
(()
=>
{
var
args
=
new
WorkspaceChangeEventArgs
(
kind
,
oldSolution
,
newSolution
,
projectId
,
documentId
);
_eventMap
.
RaiseEvent
<
EventHandler
<
WorkspaceChangeEventArgs
>>(
WorkspaceChangeEventName
,
handler
=>
handler
(
this
,
args
));
ev
.
RaiseEvent
(
handler
=>
handler
(
this
,
args
));
},
"Workspace.WorkspaceChanged"
);
}
else
...
...
@@ -81,10 +82,11 @@ protected Task RaiseWorkspaceChangedEventAsync(WorkspaceChangeKind kind, Solutio
protected
internal
virtual
void
OnWorkspaceFailed
(
WorkspaceDiagnostic
diagnostic
)
{
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
<
WorkspaceDiagnosticEventArgs
>>(
WorkspaceFailedEventName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
<
WorkspaceDiagnosticEventArgs
>>(
WorkspaceFailedEventName
);
if
(
ev
.
HasHandlers
)
{
var
args
=
new
WorkspaceDiagnosticEventArgs
(
diagnostic
);
_eventMap
.
RaiseEvent
<
EventHandler
<
WorkspaceDiagnosticEventArgs
>>(
WorkspaceFailedEventName
,
handler
=>
handler
(
this
,
args
));
ev
.
RaiseEvent
(
handler
=>
handler
(
this
,
args
));
}
}
...
...
@@ -106,12 +108,13 @@ protected internal virtual void OnWorkspaceFailed(WorkspaceDiagnostic diagnostic
protected
Task
RaiseDocumentOpenedEventAsync
(
Document
document
)
{
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
<
DocumentEventArgs
>>(
DocumentOpenedEventName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
<
DocumentEventArgs
>>(
DocumentOpenedEventName
);
if
(
ev
.
HasHandlers
)
{
return
this
.
ScheduleTask
(()
=>
{
var
args
=
new
DocumentEventArgs
(
document
);
_eventMap
.
RaiseEvent
<
EventHandler
<
DocumentEventArgs
>>(
DocumentOpenedEventName
,
handler
=>
handler
(
this
,
args
));
ev
.
RaiseEvent
(
handler
=>
handler
(
this
,
args
));
},
"Workspace.WorkspaceChanged"
);
}
else
...
...
@@ -138,12 +141,13 @@ protected Task RaiseDocumentOpenedEventAsync(Document document)
protected
Task
RaiseDocumentClosedEventAsync
(
Document
document
)
{
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
<
DocumentEventArgs
>>(
DocumentClosedEventName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
<
DocumentEventArgs
>>(
DocumentClosedEventName
);
if
(
ev
.
HasHandlers
)
{
return
this
.
ScheduleTask
(()
=>
{
var
args
=
new
DocumentEventArgs
(
document
);
_eventMap
.
RaiseEvent
<
EventHandler
<
DocumentEventArgs
>>(
DocumentClosedEventName
,
handler
=>
handler
(
this
,
args
));
ev
.
RaiseEvent
(
handler
=>
handler
(
this
,
args
));
},
"Workspace.DocumentClosed"
);
}
else
...
...
@@ -171,12 +175,13 @@ protected Task RaiseDocumentClosedEventAsync(Document document)
protected
Task
RaiseDocumentActiveContextChangedEventAsync
(
Document
document
)
{
if
(
_eventMap
.
HasEventHandlers
<
EventHandler
<
DocumentEventArgs
>>(
DocumentActiveContextChangedName
))
var
ev
=
_eventMap
.
GetEventHandlers
<
EventHandler
<
DocumentEventArgs
>>(
DocumentActiveContextChangedName
);
if
(
ev
.
HasHandlers
)
{
return
this
.
ScheduleTask
(()
=>
{
var
args
=
new
DocumentEventArgs
(
document
);
_eventMap
.
RaiseEvent
<
EventHandler
<
DocumentEventArgs
>>(
DocumentActiveContextChangedName
,
handler
=>
handler
(
this
,
args
));
ev
.
RaiseEvent
(
handler
=>
handler
(
this
,
args
));
},
"Workspace.WorkspaceChanged"
);
}
else
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录