Here are the examples of the csharp api System.Action.Invoke() taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
12579 Examples
19
View Source File : TerrariaHooksManager.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
static void OnUnloadAll(Action orig) {
orig();
// Dispose the context.
Dispose();
}
19
View Source File : CelesteNetClientContext.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
public override void Update(GameTime gameTime) {
base.Update(gameTime);
lock (MainThreadQueue)
while (MainThreadQueue.Count > 0)
MainThreadQueue.Dequeue()();
if (Started && !(Client?.IsAlive ?? true))
Dispose();
}
19
View Source File : CelesteNetClientContext.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
protected void RunOnMainThread(Action action, bool wait = false) {
if (Thread.CurrentThread == MainThreadHelper.MainThread) {
action();
return;
}
using ManualResetEvent waiter = wait ? new ManualResetEvent(false) : null;
if (wait) {
Action real = action;
action = () => {
try {
real();
} finally {
waiter.Set();
}
};
}
lock (MainThreadQueue)
MainThreadQueue.Enqueue(action);
if (wait)
WaitHandle.WaitAny(new WaitHandle[] { waiter });
}
19
View Source File : DataContext.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
public Action WaitFor<T>(int timeout, DataFilter<T> cb, Action? cbTimeout = null) where T : DataType<T> {
object key = new();
DataHandler? wrap = null;
wrap = RegisterHandler<T>((con, data) => {
lock (key) {
if (wrap == null || !cb(con, data))
return;
UnregisterHandler(typeof(T), wrap);
wrap = null;
}
});
if (timeout > 0)
Task.Run(async () => {
await Task.Delay(timeout);
lock (key) {
if (wrap == null)
return;
try {
UnregisterHandler(typeof(T), wrap);
wrap = null;
cbTimeout?.Invoke();
} catch (Exception e) {
Logger.Log(LogLevel.CRI, "data", $"Error in WaitFor timeout callback:\n{typeof(T).FullName}\n{cb}\n{e}");
}
}
});
return () => UnregisterHandler(typeof(T), wrap);
}
19
View Source File : DisposeActionStream.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
public override void Close() {
Action?.Invoke();
Inner.Close();
}
19
View Source File : DisposeActionStream.cs
License : MIT License
Project Creator : 0x0ade
License : MIT License
Project Creator : 0x0ade
protected override void Dispose(bool disposing) {
Action?.Invoke();
Inner.Dispose();
}
19
View Source File : Maybe.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
void IMaybe.Exit()
{
if (this._continuation == null)
{
this._forExit = true; //Sync
return;
}
this._result = MaybeResult.Nothing();
this.IsCompleted = true;
if (this._parent != null)
{
this._parent.Exit();
}
else
{
this._continuation();
}
}
19
View Source File : Maybe.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
internal void SetException(Exception exception)
{
this._exception = exception;
this.IsCompleted = true;
this._continuation?.Invoke();
}
19
View Source File : Maybe.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
private void NotifyResult(bool isNothing)
{
this.IsCompleted = true;
if (isNothing)
{
this._parent.Exit();
}
else
{
this._continuation?.Invoke();
}
}
19
View Source File : MaybeEx.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
public void OnCompleted(Action continuation)
{
if (this._continuation != null)
{
throw new Exception("Only one continuation is allowed");
}
if (this._result.HasValue)
{
continuation();
}
else
{
this._continuation = continuation;
}
}
19
View Source File : MaybeEx.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
private void SetFinalContinuation(Action finalContinuation)
{
this._finalContinuation = finalContinuation;
if (this.IsCompleted)
{
finalContinuation();
}
}
19
View Source File : MaybeEx.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
private void CallContinuation()
{
this.IsCompleted = true;
if (this._finalContinuation != null)
{
this._finalContinuation();
}
else
{
this._continuation?.Invoke();
}
}
19
View Source File : Reader.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
public void OnCompleted(Action continuation)
{
if (this.IsCompleted)
{
continuation();
}
else
{
if (this._continuation != null)
{
throw new Exception("Only a single async continuation is allowed");
}
this._continuation = continuation;
}
}
19
View Source File : Reader.cs
License : MIT License
Project Creator : 0x1000000
License : MIT License
Project Creator : 0x1000000
internal void SetResult(T result)
{
this._result = result;
this.IsCompleted = true;
this._continuation?.Invoke();
}
19
View Source File : CommandExecuteMonitor.cs
License : MIT License
Project Creator : 1100100
License : MIT License
Project Creator : 1100100
private void SyncCommandExecuteMonitor(string methodName, string sql, object param, Action action)
{
var sw = Stopwatch.StartNew();
try
{
action();
}
finally
{
sw.Stop();
if (sw.ElapsedMilliseconds > MonitorConfiguration.SlowCriticalValue)
{
SlowCommandNotification(methodName, sql, param, sw.ElapsedMilliseconds);
}
}
}
19
View Source File : DisposableAction.cs
License : MIT License
Project Creator : 1100100
License : MIT License
Project Creator : 1100100
public void Dispose()
{
_action();
}
19
View Source File : MetroColorPicker.xaml.cs
License : MIT License
Project Creator : 1217950746
License : MIT License
Project Creator : 1217950746
private void Initialize(HsbaColor hsbaColor)
{
// 绑定主题
Utility.Refresh(this);
// 设置当前初始颜色
currentColor = hsbaColor;
// defaultColor = currentColor;
// 界面初始化
viewDefColor.Background = defaultColor.SolidColorBrush;
viewLine1.Offset = 1.0 / 6.0 * 0.0;
viewLine2.Offset = 1.0 / 6.0 * 1.0;
viewLine3.Offset = 1.0 / 6.0 * 2.0;
viewLine4.Offset = 1.0 / 6.0 * 3.0;
viewLine5.Offset = 1.0 / 6.0 * 4.0;
viewLine6.Offset = 1.0 / 6.0 * 5.0;
viewLine7.Offset = 1.0 / 6.0 * 6.0;
// 按钮事件
bool start = true;
button.Click += delegate
{
polygon.Margin = new Thickness(ActualWidth / 2 - 5, -5.0, 0.0, 0.0);
popup.IsOpen = true;
if (start)
{
ApplyColor(currentColor);
start = false;
}
};
popup.Closed += delegate { if (ColorPickerClosed != null) ColorPickerClosed(); };
viewDefColor.Click += delegate { ApplyColor(new HsbaColor(viewDefColor.Background)); };
hex.ButtonClick += delegate { Clipboard.SetText(hex.Text); };
// 视图被改变事件
thumbSB.ValueChange += delegate { if (thumbSB.IsDragging) ViewChange(); };
thumbH.ValueChange += delegate { if (thumbH.IsDragging) ViewChange(); };
thumbA.ValueChange += delegate { if (thumbA.IsDragging) ViewChange(); };
// RGBA操作事件
rgbaR.TextChanged += delegate { if (rgbaR.IsSelectionActive) RgbaChange(); };
rgbaG.TextChanged += delegate { if (rgbaG.IsSelectionActive) RgbaChange(); };
rgbaB.TextChanged += delegate { if (rgbaB.IsSelectionActive) RgbaChange(); };
rgbaA.TextChanged += delegate { if (rgbaA.IsSelectionActive) RgbaChange(); };
// HSBA操作事件
hsbaH.TextChanged += delegate { if (hsbaH.IsSelectionActive) HsbaChange(); };
hsbaS.TextChanged += delegate { if (hsbaS.IsSelectionActive) HsbaChange(); };
hsbaB.TextChanged += delegate { if (hsbaB.IsSelectionActive) HsbaChange(); };
hsbaA.TextChanged += delegate { if (hsbaA.IsSelectionActive) HsbaChange(); };
// HEX操作事件
hex.TextChanged += delegate { if (hex.IsSelectionActive) HexChange(); };
}
19
View Source File : MetroRichTextBox.cs
License : MIT License
Project Creator : 1217950746
License : MIT License
Project Creator : 1217950746
public void AddLine(string content, RgbaColor rgba, Action action)
{
Run run = new Run(content);
if (action == null)
{
if (rgba != null) { run.Foreground = rgba.SolidColorBrush; }
Doreplacedent.Blocks.Add(new Paragraph(run));
}
else
{
Hyperlink hl = new Hyperlink(run);
if (rgba != null) { hl.Foreground = rgba.SolidColorBrush; }
hl.Click += delegate { action(); };
hl.MouseLeftButtonDown += delegate { action(); };
Doreplacedent.Blocks.Add(new Paragraph(hl));
}
ScrollToEnd();
}
19
View Source File : MetroRichTextBox.cs
License : MIT License
Project Creator : 1217950746
License : MIT License
Project Creator : 1217950746
public void AddLine(ImageSource image, Action action)
{
if (action == null)
{
Doreplacedent.Blocks.Add(new Paragraph(new InlineUIContainer(new MetroImage(image))));
}
else
{
Hyperlink hl = new Hyperlink(new InlineUIContainer(new MetroImage(image)));
hl.Foreground = null;
hl.Click += delegate { action(); };
hl.MouseLeftButtonDown += delegate { action(); };
Doreplacedent.Blocks.Add(new Paragraph(hl));
}
ScrollToEnd();
}
19
View Source File : MetroRichTextBox.cs
License : MIT License
Project Creator : 1217950746
License : MIT License
Project Creator : 1217950746
public void Add(string content, RgbaColor rgba, Action action)
{
if (Doreplacedent.Blocks.Count <= 0)
{
Doreplacedent.Blocks.Add(new Paragraph());
}
Run run = new Run(content);
if (action == null)
{
if (rgba != null) { run.Foreground = rgba.SolidColorBrush; }
(Doreplacedent.Blocks.LastBlock as Paragraph).Inlines.Add(run);
}
else
{
Hyperlink hl = new Hyperlink(run);
if (rgba != null) { hl.Foreground = rgba.SolidColorBrush; }
hl.Click += delegate { action(); };
hl.MouseLeftButtonDown += delegate { action(); };
(Doreplacedent.Blocks.LastBlock as Paragraph).Inlines.Add(hl);
}
ScrollToEnd();
}
19
View Source File : MetroRichTextBox.cs
License : MIT License
Project Creator : 1217950746
License : MIT License
Project Creator : 1217950746
public void Add(ImageSource image, Action action)
{
if (Doreplacedent.Blocks.Count <= 0)
{
Doreplacedent.Blocks.Add(new Paragraph());
}
if (action == null)
{
(Doreplacedent.Blocks.LastBlock as Paragraph).Inlines.Add(new InlineUIContainer(new MetroImage(image)));
}
else
{
Hyperlink hl = new Hyperlink(new InlineUIContainer(new MetroImage(image)));
hl.Foreground = null;
hl.Click += delegate { action(); };
hl.MouseLeftButtonDown += delegate { action(); };
(Doreplacedent.Blocks.LastBlock as Paragraph).Inlines.Add(hl);
}
ScrollToEnd();
}
19
View Source File : DbBuilder.cs
License : MIT License
Project Creator : 17MKH
License : MIT License
Project Creator : 17MKH
public void Build()
{
if (Options.Provider != DbProvider.Sqlite)
Check.NotNull(Options.ConnectionString, "连接字符串未配置");
//创建数据库上下文
CreateDbContext();
//加载仓储
LoadRepositories();
//执行自定义委托
foreach (var action in _actions)
{
action.Invoke();
}
}
19
View Source File : VerifyHelper.cs
License : MIT License
Project Creator : 1996v
License : MIT License
Project Creator : 1996v
public static void IsSafeAction(Action testCode)
{
testCode();
}
19
View Source File : VerifyHelper.cs
License : MIT License
Project Creator : 1996v
License : MIT License
Project Creator : 1996v
public static void Throws<T>(Action testCode, Func<T, bool> ex) where T : Exception
{
try
{
testCode();
}
catch (T t)
{
if (ex(t) == false)
throw new Exception("Different exception information", t);
return;
}
catch
{
throw;
}
throw new Exception("No exception");
}
19
View Source File : VerifyHelper.cs
License : MIT License
Project Creator : 1996v
License : MIT License
Project Creator : 1996v
public static void Throws<T>(Action testCode) where T : Exception
{
try
{
testCode();
}
catch (T)
{
return;
}
catch
{
throw;
}
throw new Exception("No exception");
}
19
View Source File : G_CUIColorPicker.cs
License : MIT License
Project Creator : 1ZouLTReX1
License : MIT License
Project Creator : 1ZouLTReX1
private void Setup( Color inputColor )
{
alphaSlider.value = inputColor.a;
alphaSliderBGImage.color = inputColor;
var satvalGO = GO( "SaturationValue" );
var satvalKnob = GO( "SaturationValue/Knob" );
var hueGO = GO( "Hue" );
var hueKnob = GO( "Hue/Knob" );
var result = GO( "Result" );
var hueColors = new Color []
{
Color.red,
Color.yellow,
Color.green,
Color.cyan,
Color.blue,
Color.magenta,
};
var satvalColors = new Color []
{
new Color( 0, 0, 0 ),
new Color( 0, 0, 0 ),
new Color( 1, 1, 1 ),
hueColors[0],
};
var hueTex = new Texture2D( 1, 7 );
for ( int i = 0; i < 7; i++ ) {
hueTex.SetPixel( 0, i, hueColors[i % 6] );
}
hueTex.Apply();
hueGO.GetComponent<Image>().sprite = Sprite.Create( hueTex, new Rect( 0, 0.5f, 1, 6 ), new Vector2( 0.5f, 0.5f ) );
var hueSz = GetWidgetSize( hueGO );
var satvalTex = new Texture2D(2,2);
satvalGO.GetComponent<Image>().sprite = Sprite.Create( satvalTex, new Rect( 0.5f, 0.5f, 1, 1 ), new Vector2( 0.5f, 0.5f ) );
System.Action resetSatValTexture = () => {
for ( int j = 0; j < 2; j++ ) {
for ( int i = 0; i < 2; i++ ) {
satvalTex.SetPixel( i, j, satvalColors[i + j * 2] );
}
}
satvalTex.Apply();
};
var satvalSz = GetWidgetSize( satvalGO );
float Hue, Saturation, Value;
RGBToHSV( inputColor, out Hue, out Saturation, out Value );
System.Action applyHue = () =>
{
var i0 = Mathf.Clamp( ( int )Hue, 0, 5 );
var i1 = ( i0 + 1 ) % 6;
var resultColor = Color.Lerp( hueColors[i0], hueColors[i1], Hue - i0 );
satvalColors[3] = resultColor;
resetSatValTexture();
};
System.Action applySaturationValue = () =>
{
var sv = new Vector2( Saturation, Value );
var isv = new Vector2( 1 - sv.x, 1 - sv.y );
var c0 = isv.x * isv.y * satvalColors[0];
var c1 = sv.x * isv.y * satvalColors[1];
var c2 = isv.x * sv.y * satvalColors[2];
var c3 = sv.x * sv.y * satvalColors[3];
var resultColor = c0 + c1 + c2 + c3;
var resImg = result.GetComponent<Image>();
resImg.color = resultColor;
if ( _color != resultColor )
{
resultColor = new Color(resultColor.r, resultColor.g, resultColor.b, alphaSlider.value);
if ( _onValueChange != null )
{
_onValueChange( resultColor );
}
_color = resultColor;
alphaSliderBGImage.color = _color;
}
};
applyHue();
applySaturationValue();
satvalKnob.transform.localPosition = new Vector2( Saturation * satvalSz.x, Value * satvalSz.y );
hueKnob.transform.localPosition = new Vector2( hueKnob.transform.localPosition.x, Hue / 6 * satvalSz.y );
System.Action dragH = null;
System.Action dragSV = null;
System.Action idle = () => {
if ( Input.GetMouseButtonDown( 0 ) ) {
Vector2 mp;
if ( GetLocalMouse( hueGO, out mp ) ) {
_update = dragH;
} else if ( GetLocalMouse( satvalGO, out mp ) ) {
_update = dragSV;
}
}
};
dragH = () => {
Vector2 mp;
GetLocalMouse( hueGO, out mp );
Hue = mp.y / hueSz.y * 6;
applyHue();
applySaturationValue();
hueKnob.transform.localPosition = new Vector2( hueKnob.transform.localPosition.x, mp.y );
if ( Input.GetMouseButtonUp( 0 ) ) {
_update = idle;
}
};
dragSV = () => {
Vector2 mp;
GetLocalMouse( satvalGO, out mp );
Saturation = mp.x / satvalSz.x;
Value = mp.y / satvalSz.y;
applySaturationValue();
satvalKnob.transform.localPosition = mp;
if ( Input.GetMouseButtonUp( 0 ) ) {
_update = idle;
}
};
_update = idle;
}
19
View Source File : G_CUIColorPicker.cs
License : MIT License
Project Creator : 1ZouLTReX1
License : MIT License
Project Creator : 1ZouLTReX1
void Update()
{
if (_update != null) { _update(); }
}
19
View Source File : UnityThread.cs
License : MIT License
Project Creator : 1ZouLTReX1
License : MIT License
Project Creator : 1ZouLTReX1
public void Update()
{
if (noActionQueueToExecuteUpdateFunc)
{
return;
}
//Clear the old actions from the actionCopiedQueueUpdateFunc queue
actionCopiedQueueUpdateFunc.Clear();
lock (actionQueuesUpdateFunc)
{
//Copy actionQueuesUpdateFunc to the actionCopiedQueueUpdateFunc variable
actionCopiedQueueUpdateFunc.AddRange(actionQueuesUpdateFunc);
//Now clear the actionQueuesUpdateFunc since we've done copying it
actionQueuesUpdateFunc.Clear();
noActionQueueToExecuteUpdateFunc = true;
}
// Loop and execute the functions from the actionCopiedQueueUpdateFunc
for (int i = 0; i < actionCopiedQueueUpdateFunc.Count; i++)
{
actionCopiedQueueUpdateFunc[i].Invoke();
}
}
19
View Source File : UnityThread.cs
License : MIT License
Project Creator : 1ZouLTReX1
License : MIT License
Project Creator : 1ZouLTReX1
public void LateUpdate()
{
if (noActionQueueToExecuteLateUpdateFunc)
{
return;
}
//Clear the old actions from the actionCopiedQueueLateUpdateFunc queue
actionCopiedQueueLateUpdateFunc.Clear();
lock (actionQueuesLateUpdateFunc)
{
//Copy actionQueuesLateUpdateFunc to the actionCopiedQueueLateUpdateFunc variable
actionCopiedQueueLateUpdateFunc.AddRange(actionQueuesLateUpdateFunc);
//Now clear the actionQueuesLateUpdateFunc since we've done copying it
actionQueuesLateUpdateFunc.Clear();
noActionQueueToExecuteLateUpdateFunc = true;
}
// Loop and execute the functions from the actionCopiedQueueLateUpdateFunc
for (int i = 0; i < actionCopiedQueueLateUpdateFunc.Count; i++)
{
actionCopiedQueueLateUpdateFunc[i].Invoke();
}
}
19
View Source File : UnityThread.cs
License : MIT License
Project Creator : 1ZouLTReX1
License : MIT License
Project Creator : 1ZouLTReX1
public void FixedUpdate()
{
if (noActionQueueToExecuteFixedUpdateFunc)
{
return;
}
//Clear the old actions from the actionCopiedQueueFixedUpdateFunc queue
actionCopiedQueueFixedUpdateFunc.Clear();
lock (actionQueuesFixedUpdateFunc)
{
//Copy actionQueuesFixedUpdateFunc to the actionCopiedQueueFixedUpdateFunc variable
actionCopiedQueueFixedUpdateFunc.AddRange(actionQueuesFixedUpdateFunc);
//Now clear the actionQueuesFixedUpdateFunc since we've done copying it
actionQueuesFixedUpdateFunc.Clear();
noActionQueueToExecuteFixedUpdateFunc = true;
}
// Loop and execute the functions from the actionCopiedQueueFixedUpdateFunc
for (int i = 0; i < actionCopiedQueueFixedUpdateFunc.Count; i++)
{
actionCopiedQueueFixedUpdateFunc[i].Invoke();
}
}
19
View Source File : TempDisposable.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
public void Dispose() => _release?.Invoke();
19
View Source File : SingleTempAdapter.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
public override void Dispose()
{
_dispose?.Invoke();
}
19
View Source File : DefaultRedisSocket.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
public void Dispose() => _dispose?.Invoke();
19
View Source File : DbContextSync.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
internal void ExecCommand() {
if (isExecCommanding) return;
if (_actions.Any() == false) return;
isExecCommanding = true;
ExecCommandInfo oldinfo = null;
var states = new List<object>();
Func<string, int> dbContextBetch = methodName => {
if (_dicExecCommandDbContextBetch.TryGetValue(oldinfo.stateType, out var trydic) == false)
trydic = new Dictionary<string, Func<object, object[], int>>();
if (trydic.TryGetValue(methodName, out var tryfunc) == false) {
var arrType = oldinfo.stateType.MakeArrayType();
var dbsetType = oldinfo.dbSet.GetType().BaseType;
var dbsetTypeMethod = dbsetType.GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance, null, new[] { arrType }, null);
var returnTarget = Expression.Label(typeof(int));
var parm1DbSet = Expression.Parameter(typeof(object));
var parm2Vals = Expression.Parameter(typeof(object[]));
var var1Vals = Expression.Variable(arrType);
tryfunc = Expression.Lambda<Func<object, object[], int>>(Expression.Block(
new[] { var1Vals },
Expression.replacedign(var1Vals, Expression.Convert(global::FreeSql.Internal.Utils.GetDataReaderValueBlockExpression(arrType, parm2Vals), arrType)),
Expression.Return(returnTarget, Expression.Call(Expression.Convert(parm1DbSet, dbsetType), dbsetTypeMethod, var1Vals)),
Expression.Label(returnTarget, Expression.Default(typeof(int)))
), new[] { parm1DbSet, parm2Vals }).Compile();
trydic.Add(methodName, tryfunc);
}
return tryfunc(oldinfo.dbSet, states.ToArray());
};
Action funcDelete = () => {
_affrows += dbContextBetch("DbContextBetchRemove");
states.Clear();
};
Action funcInsert = () => {
_affrows += dbContextBetch("DbContextBetchAdd");
states.Clear();
};
Action<bool> funcUpdate = isLiveUpdate => {
var affrows = 0;
if (isLiveUpdate) affrows = dbContextBetch("DbContextBetchUpdateNow");
else affrows = dbContextBetch("DbContextBetchUpdate");
if (affrows == -999) { //最后一个元素已被删除
states.RemoveAt(states.Count - 1);
return;
}
if (affrows == -998 || affrows == -997) { //没有执行更新
var laststate = states[states.Count - 1];
states.Clear();
if (affrows == -997) states.Add(laststate); //保留最后一个
}
if (affrows > 0) {
_affrows += affrows;
var islastNotUpdated = states.Count != affrows;
var laststate = states[states.Count - 1];
states.Clear();
if (islastNotUpdated) states.Add(laststate); //保留最后一个
}
};
while (_actions.Any() || states.Any()) {
var info = _actions.Any() ? _actions.Dequeue() : null;
if (oldinfo == null) oldinfo = info;
var isLiveUpdate = false;
if (_actions.Any() == false && states.Any() ||
info != null && oldinfo.actionType != info.actionType ||
info != null && oldinfo.stateType != info.stateType) {
if (info != null && oldinfo.actionType == info.actionType && oldinfo.stateType == info.stateType) {
//最后一个,合起来发送
states.Add(info.state);
info = null;
}
switch (oldinfo.actionType) {
case ExecCommandInfoType.Insert:
funcInsert();
break;
case ExecCommandInfoType.Delete:
funcDelete();
break;
}
isLiveUpdate = true;
}
if (isLiveUpdate || oldinfo.actionType == ExecCommandInfoType.Update) {
if (states.Any())
funcUpdate(isLiveUpdate);
}
if (info != null) {
states.Add(info.state);
oldinfo = info;
}
}
isExecCommanding = false;
}
19
View Source File : DataFilter.cs
License : MIT License
Project Creator : 2881099
License : MIT License
Project Creator : 2881099
public void Dispose() {
_ondis?.Invoke();
}
19
View Source File : SourceStringBuilder.cs
License : MIT License
Project Creator : 31
License : MIT License
Project Creator : 31
public void BlockPrefix(string delimiter, Action writeInner)
{
_indentPrefix.Append(delimiter);
writeInner();
_indentPrefix.Remove(_indentPrefix.Length - delimiter.Length, delimiter.Length);
}
19
View Source File : IHandModel.cs
License : MIT License
Project Creator : 39M
License : MIT License
Project Creator : 39M
public virtual void FinishHand() {
if (OnFinish != null) {
OnFinish();
}
isTracked = false;
}
19
View Source File : IHandModel.cs
License : MIT License
Project Creator : 39M
License : MIT License
Project Creator : 39M
public virtual void BeginHand() {
if (OnBegin != null) {
OnBegin();
}
isTracked = true;
}
19
View Source File : Utils.cs
License : MIT License
Project Creator : 39M
License : MIT License
Project Creator : 39M
public static IEnumerator WaitAndAction(float time, Action action)
{
yield return new WaitForSeconds(time);
action();
}
19
View Source File : Machine.cs
License : MIT License
Project Creator : 3RD-Dimension
License : MIT License
Project Creator : 3RD-Dimension
public void Connect()
{
if (Connected)
throw new Exception("Can't Connect: Already Connected");
switch (Properties.Settings.Default.ConnectionType)
{
case ConnectionType.Serial:
SerialPort port = new SerialPort(Properties.Settings.Default.SerialPortName, Properties.Settings.Default.SerialPortBaud);
port.DtrEnable = Properties.Settings.Default.SerialPortDTR;
port.Open();
Connection = port.BaseStream;
break;
default:
throw new Exception("Invalid Connection Type");
}
if (Properties.Settings.Default.LogTraffic)
{
try
{
Log = new StreamWriter(Constants.LogFile);
}
catch (Exception e)
{
NonFatalException("could not open logfile: " + e.Message);
}
}
Connected = true;
ToSend.Clear();
ToSendPriority.Clear();
Sent.Clear();
ToSendMacro.Clear();
Mode = OperatingMode.Manual;
if (PositionUpdateReceived != null)
PositionUpdateReceived.Invoke();
WorkerThread = new Thread(Work);
WorkerThread.Priority = ThreadPriority.AboveNormal;
WorkerThread.Start();
}
19
View Source File : Machine.cs
License : MIT License
Project Creator : 3RD-Dimension
License : MIT License
Project Creator : 3RD-Dimension
public void Disconnect()
{
if (Log != null)
Log.Close();
Log = null;
Connected = false;
WorkerThread.Join();
try
{
Connection.Close();
}
catch { }
Connection.Dispose();
Connection = null;
Mode = OperatingMode.Disconnected;
MachinePosition = new Vector3();
WorkOffset = new Vector3();
FeedRateRealtime = 0;
CurrentTLO = 0;
if (PositionUpdateReceived != null)
PositionUpdateReceived.Invoke();
Status = "Disconnected";
DistanceMode = ParseDistanceMode.Absolute;
Unit = ParseUnit.Metric;
Plane = ArcPlane.XY;
BufferState = 0;
FeedOverride = 100;
RapidOverride = 100;
SpindleOverride = 100;
if (OverrideChanged != null)
OverrideChanged.Invoke();
PinStateLimitX = false;
PinStateLimitY = false;
PinStateLimitZ = false;
PinStateProbe = false;
if (PinStateChanged != null)
PinStateChanged.Invoke();
ToSend.Clear();
ToSendPriority.Clear();
Sent.Clear();
ToSendMacro.Clear();
}
19
View Source File : Machine.cs
License : MIT License
Project Creator : 3RD-Dimension
License : MIT License
Project Creator : 3RD-Dimension
public void SoftReset()
{
if (!Connected)
{
RaiseEvent(Info, "Not Connected");
return;
}
Mode = OperatingMode.Manual;
ToSend.Clear();
ToSendPriority.Clear();
Sent.Clear();
ToSendMacro.Clear();
ToSendPriority.Enqueue((char)0x18);
BufferState = 0;
FeedOverride = 100;
RapidOverride = 100;
SpindleOverride = 100;
if (OverrideChanged != null)
OverrideChanged.Invoke();
SendLine("$G");
SendLine("$#");
}
19
View Source File : ObjectExtension.cs
License : MIT License
Project Creator : 3F
License : MIT License
Project Creator : 3F
public static T E<T>(this T obj, Action act) => E(obj, _=> act());
19
View Source File : EnterNumberWindow.xaml.cs
License : MIT License
Project Creator : 3RD-Dimension
License : MIT License
Project Creator : 3RD-Dimension
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (!Ok && User_Cancel != null)
User_Cancel.Invoke();
}
19
View Source File : Machine.cs
License : MIT License
Project Creator : 3RD-Dimension
License : MIT License
Project Creator : 3RD-Dimension
private void ParseStatus(string line)
{
MatchCollection statusMatch = StatusEx.Matches(line);
if (statusMatch.Count == 0)
{
NonFatalException.Invoke(string.Format("Received Bad Status: '{0}'", line));
return;
}
bool posUpdate = false;
bool overrideUpdate = false;
bool pinStateUpdate = false;
bool resetPins = true;
foreach (Match m in statusMatch)
{
if (m.Index == 1)
{
Status = m.Groups[1].Value;
continue;
}
if (m.Groups[1].Value == "Ov")
{
try
{
string[] parts = m.Groups[2].Value.Split(',');
FeedOverride = int.Parse(parts[0]);
RapidOverride = int.Parse(parts[1]);
SpindleOverride = int.Parse(parts[2]);
overrideUpdate = true;
}
catch { NonFatalException.Invoke(string.Format("Received Bad Status: '{0}'", line)); }
}
else if (m.Groups[1].Value == "WCO")
{
try
{
string OffsetString = m.Groups[2].Value;
if (Properties.Settings.Default.IgnoreAdditionalAxes)
{
string[] parts = OffsetString.Split(',');
if (parts.Length > 3)
{
Array.Resize(ref parts, 3);
OffsetString = string.Join(",", parts);
}
}
WorkOffset = Vector3.Parse(OffsetString);
posUpdate = true;
}
catch { NonFatalException.Invoke(string.Format("Received Bad Status: '{0}'", line)); }
}
else if (SyncBuffer && m.Groups[1].Value == "Bf")
{
try
{
int availableBytes = int.Parse(m.Groups[2].Value.Split(',')[1]);
int used = Properties.Settings.Default.ControllerBufferSize - availableBytes;
if (used < 0)
used = 0;
BufferState = used;
RaiseEvent(Info, $"Buffer State Synced ({availableBytes} bytes free)");
}
catch { NonFatalException.Invoke(string.Format("Received Bad Status: '{0}'", line)); }
}
else if (m.Groups[1].Value == "Pn")
{
resetPins = false;
string states = m.Groups[2].Value;
bool stateX = states.Contains("X");
if (stateX != PinStateLimitX)
pinStateUpdate = true;
PinStateLimitX = stateX;
bool stateY = states.Contains("Y");
if (stateY != PinStateLimitY)
pinStateUpdate = true;
PinStateLimitY = stateY;
bool stateZ = states.Contains("Z");
if (stateZ != PinStateLimitZ)
pinStateUpdate = true;
PinStateLimitZ = stateZ;
bool stateP = states.Contains("P");
if (stateP != PinStateProbe)
pinStateUpdate = true;
PinStateProbe = stateP;
}
else if (m.Groups[1].Value == "F")
{
try
{
FeedRateRealtime = double.Parse(m.Groups[2].Value, Constants.DecimalParseFormat);
posUpdate = true;
}
catch { NonFatalException.Invoke(string.Format("Received Bad Status: '{0}'", line)); }
}
else if (m.Groups[1].Value == "FS")
{
try
{
string[] parts = m.Groups[2].Value.Split(',');
FeedRateRealtime = double.Parse(parts[0], Constants.DecimalParseFormat);
SpindleSpeedRealtime = double.Parse(parts[1], Constants.DecimalParseFormat);
posUpdate = true;
}
catch { NonFatalException.Invoke(string.Format("Received Bad Status: '{0}'", line)); }
}
}
SyncBuffer = false; //only run this immediately after button press
//run this later to catch work offset changes before parsing position
Vector3 NewMachinePosition = MachinePosition;
foreach (Match m in statusMatch)
{
if (m.Groups[1].Value == "MPos" || m.Groups[1].Value == "WPos")
{
try
{
string PositionString = m.Groups[2].Value;
if (Properties.Settings.Default.IgnoreAdditionalAxes)
{
string[] parts = PositionString.Split(',');
if (parts.Length > 3)
{
Array.Resize(ref parts, 3);
PositionString = string.Join(",", parts);
}
}
NewMachinePosition = Vector3.Parse(PositionString);
if (m.Groups[1].Value == "WPos")
NewMachinePosition += WorkOffset;
if (NewMachinePosition != MachinePosition)
{
posUpdate = true;
MachinePosition = NewMachinePosition;
}
}
catch { NonFatalException.Invoke(string.Format("Received Bad Status: '{0}'", line)); }
}
}
if (posUpdate && Connected && PositionUpdateReceived != null)
PositionUpdateReceived.Invoke();
if (overrideUpdate && Connected && OverrideChanged != null)
OverrideChanged.Invoke();
if (resetPins) //no pin state received in status -> all zero
{
pinStateUpdate = PinStateLimitX | PinStateLimitY | PinStateLimitZ | PinStateProbe; //was any pin set before
PinStateLimitX = false;
PinStateLimitY = false;
PinStateLimitZ = false;
PinStateProbe = false;
}
if (pinStateUpdate && Connected && PinStateChanged != null)
PinStateChanged.Invoke();
if (Connected && StatusReceived != null)
StatusReceived.Invoke(line);
}
19
View Source File : GameEventData.cs
License : MIT License
Project Creator : 404Lcc
License : MIT License
Project Creator : 404Lcc
public void Excute()
{
Callback?.Invoke();
}
19
View Source File : ETTask.cs
License : MIT License
Project Creator : 404Lcc
License : MIT License
Project Creator : 404Lcc
[DebuggerHidden]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void SetException(Exception exception)
{
if (_awaiterStatus != AwaiterStatus.Pending)
{
throw new InvalidOperationException("任务已完成");
}
_awaiterStatus = AwaiterStatus.Faulted;
Action callback = (Action)_callback;
callback?.Invoke();
_callback = ExceptionDispatchInfo.Capture(exception);
}
19
View Source File : ETTask.cs
License : MIT License
Project Creator : 404Lcc
License : MIT License
Project Creator : 404Lcc
[DebuggerHidden]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void SetResult()
{
if (_awaiterStatus != AwaiterStatus.Pending)
{
throw new InvalidOperationException("任务已完成");
}
_awaiterStatus = AwaiterStatus.Succeeded;
Action callback = (Action)_callback;
callback?.Invoke();
_callback = null;
}
19
View Source File : ETTask.cs
License : MIT License
Project Creator : 404Lcc
License : MIT License
Project Creator : 404Lcc
[DebuggerHidden]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void OnCompleted(Action continuation)
{
if (_awaiterStatus != AwaiterStatus.Pending)
{
continuation?.Invoke();
}
else
{
_callback = continuation;
}
}
19
View Source File : ETTask.cs
License : MIT License
Project Creator : 404Lcc
License : MIT License
Project Creator : 404Lcc
[DebuggerHidden]
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public void UnsafeOnCompleted(Action continuation)
{
if (_awaiterStatus != AwaiterStatus.Pending)
{
continuation?.Invoke();
}
else
{
_callback = continuation;
}
}
See More Examples