Compare commits

...
2 Commits
Author SHA1 Message Date
duffyduck 6cc3103040 Release v0.0.3.2 2026-08-17 13:30:59 +02:00
duffyduckandClaude Opus 4.8 844094d5c5 Keep UI responsive during sync (run engine off the UI thread)
Beim Tray-/Auto-Sync lief die Engine auf dem UI-Thread -> Fenster und
Tray-Kontextmenue froren ein (Menuepunkte reagierten nicht).

- MainForm.RunSync fuehrt die Engine jetzt via Task.Run im Hintergrund aus
  (wie schon der manuelle Fenster-Sync).
- Balloon() marshalled Tray-Meldungen thread-sicher per BeginInvoke auf den
  UI-Thread (die Fortsetzung kann nach Task.Run aus einem Pool-Thread kommen).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-17 13:29:49 +02:00
5 changed files with 20 additions and 7 deletions
+5
View File
@@ -21,6 +21,11 @@ Versionsschema ist `x.x.x.x` (siehe `release.sh`).
### Behoben
- **Oberflaeche friert waehrend des Syncs nicht mehr ein.** Beim Tray-/Auto-Sync
lief die Sync-Engine auf dem UI-Thread, wodurch Fenster und Tray-Kontextmenue
blockierten (Menuepunkte reagierten nicht). Die Engine laeuft jetzt im
Hintergrund (`Task.Run`), die Tray-Meldungen werden thread-sicher auf den
UI-Thread marshalled.
- **Dubletten bei Firmen-/Service-Eintraegen (nur Nummer + Firma).** Solche
Eintraege wurden bei jedem Sync neu angelegt statt verknuepft, weil der
Nummern-Abgleich feldgenau (geschaeftlich↔geschaeftlich) und formatabhaengig
+1 -1
View File
@@ -2,7 +2,7 @@
; Erfordert Inno Setup 6.x (https://jrsoftware.org/isinfo.php)
#define MyAppName "Starface Outlook Sync"
#define MyAppVersion "0.0.3.1"
#define MyAppVersion "0.0.3.2"
#define MyAppPublisher "HackerSoft - Hacker-Net Telekommunikation"
#define MyAppURL "https://www.hacker-net.de"
#define MyAppExeName "StarfaceOutlookSync.exe"
@@ -7,9 +7,9 @@
<AssemblyTitle>Starface Outlook Sync</AssemblyTitle>
<Company>HackerSoft - Hacker-Net Telekommunikation</Company>
<Product>Starface Outlook Sync</Product>
<Version>0.0.3.1</Version>
<AssemblyVersion>0.0.3.1</AssemblyVersion>
<FileVersion>0.0.3.1</FileVersion>
<Version>0.0.3.2</Version>
<AssemblyVersion>0.0.3.2</AssemblyVersion>
<FileVersion>0.0.3.2</FileVersion>
<Description>Synchronisiert Outlook-Kontakte mit Starface Telefonanlage</Description>
<Copyright>Stefan Hacker - HackerSoft</Copyright>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
+1 -1
View File
@@ -27,7 +27,7 @@ namespace StarfaceOutlookSync.UI
var lblVersion = new Label
{
Text = "Version 0.0.3.1",
Text = "Version 0.0.3.2",
Left = 0, Top = 56, Width = 340, Height = 20,
TextAlign = ContentAlignment.MiddleCenter,
ForeColor = Color.Gray
+10 -2
View File
@@ -358,9 +358,11 @@ namespace StarfaceOutlookSync.UI
{
// Lokaler Guard, Lock-Datei, Konflikt-Notizen und Protokoll laufen
// zentral im Coordinator (gemeinsam mit dem manuellen Sync-Pfad).
// WICHTIG: die Engine im Hintergrund laufen lassen, damit das
// Fenster und das Tray-Kontextmenue waehrend des Syncs reagieren.
var outcome = await _coordinator.RunAsync(
profile,
runEngine: () => _syncEngine.SyncProfileAsync(profile),
runEngine: () => Task.Run(() => _syncEngine.SyncProfileAsync(profile)),
status: SetStatus);
if (outcome.Skipped)
@@ -426,7 +428,13 @@ namespace StarfaceOutlookSync.UI
private void Balloon(int ms, string title, string text, ToolTipIcon icon, bool warn)
{
bool allow = warn ? _notifyWarn : _notifyGeneral;
if (allow) _trayIcon.ShowBalloonTip(ms, title, text, icon);
if (!allow) return;
if (InvokeRequired)
{
BeginInvoke(new Action(() => _trayIcon.ShowBalloonTip(ms, title, text, icon)));
return;
}
_trayIcon.ShowBalloonTip(ms, title, text, icon);
}
private void SetStatus(string text)